如果列包含列表,则复制数据框行的功能
Function to replicate rows of dataframe if column contains list
我不确定标题的最佳方式。如果我有一个数据框和其中一列,我们称它为 'Tags',可能包含列表也可能不包含。如果 'Tags' 是一个列表,那么我想复制该行的次数与 'Tags' 列中的唯一项目一样多,然后用每行的唯一项目替换该列中的项目。
示例:
import pandas as pd
# create dummy dataframe
df = {'Date': ['2020-10-28'],
'Item': 'My_fake_item',
'Tags': [['A', 'B']],
'Count': 3}
df = pd.DataFrame(df, columns=['Date', 'Item', 'Tags', 'Count'])
会导致:
我需要一个函数来将数据帧更改为:
应用explode
方法,例如
df_exploded = (
df.set_index(["Date", "Item", "Count"])
.apply(pd.Series.explode)
.reset_index()
)
将导致
df_exploded
>>>
Date Item Count Tags
0 2020-10-28 My_fake_item 3 A
1 2020-10-28 My_fake_item 3 B
并且无需检查列中的元素是否为列表
import pandas as pd
# create dummy dataframe
df = {'Date': ['2020-10-28', '2020-11-01'],
'Item': ['My_fake_item', 'My_other_item'],
'Tags': [['A', 'B'], 'C'],
'Count': [3, 5]}
df = pd.DataFrame(df, columns=['Date', 'Item', 'Tags', 'Count'])
将导致
Date Item Count Tags
0 2020-10-28 My_fake_item 3 A
1 2020-10-28 My_fake_item 3 B
2 2020-11-01 My_other_item 5 C
我不确定标题的最佳方式。如果我有一个数据框和其中一列,我们称它为 'Tags',可能包含列表也可能不包含。如果 'Tags' 是一个列表,那么我想复制该行的次数与 'Tags' 列中的唯一项目一样多,然后用每行的唯一项目替换该列中的项目。
示例:
import pandas as pd
# create dummy dataframe
df = {'Date': ['2020-10-28'],
'Item': 'My_fake_item',
'Tags': [['A', 'B']],
'Count': 3}
df = pd.DataFrame(df, columns=['Date', 'Item', 'Tags', 'Count'])
会导致:
我需要一个函数来将数据帧更改为:
应用explode
方法,例如
df_exploded = (
df.set_index(["Date", "Item", "Count"])
.apply(pd.Series.explode)
.reset_index()
)
将导致
df_exploded
>>>
Date Item Count Tags
0 2020-10-28 My_fake_item 3 A
1 2020-10-28 My_fake_item 3 B
并且无需检查列中的元素是否为列表
import pandas as pd
# create dummy dataframe
df = {'Date': ['2020-10-28', '2020-11-01'],
'Item': ['My_fake_item', 'My_other_item'],
'Tags': [['A', 'B'], 'C'],
'Count': [3, 5]}
df = pd.DataFrame(df, columns=['Date', 'Item', 'Tags', 'Count'])
将导致
Date Item Count Tags
0 2020-10-28 My_fake_item 3 A
1 2020-10-28 My_fake_item 3 B
2 2020-11-01 My_other_item 5 C