我有一个CSV文件,看起来像这样,已经加载到数据框中了,
keycode, warehouse_id
1, WH1
1, WH2
1, WH1
我想将其映射到看起来像这样的输出
keycode, warehouse_ids
1, [WH1, WH2]
我不确定在大熊猫中从哪里开始?我尝试使用数据透视表,但使用了聚合表,但是无法选择正确的聚合函数。
谢谢。
答案 0 :(得分:2)
df1 = df.groupby('keycode,')['warehouse_id'].unique().reset_index()
print(df1)
keycode, warehouse_id
0 1, [WH1, WH2]
说明:
通常,在将groupby
与单个操作列配合使用时,如下所示会生成索引为groupby key
的{{3}},为此,我们使用Series
将index
更改为column
:
print(df.groupby('keycode,')['warehouse_id'].unique())
keycode,
1, [WH1, WH2]
Name: warehouse_id, dtype: object
print(type(df.groupby('keycode,')['warehouse_id'].unique()))
<class 'pandas.core.series.Series'>
print(df.groupby('keycode,')['warehouse_id'].unique().reset_index())
keycode, warehouse_id
0 1, [WH1, WH2]
答案 1 :(得分:1)
pandas 'groupby'运算符用于执行此类操作。
您可以这样做:
df.groupby('keycode')['warehouse_id'].apply(list)
假设“ df”是您的数据框名称。
答案 2 :(得分:1)
list(set(iterable))
df.groupby('keycode').warehouse_id.apply(lambda x: [*{*x}]).reset_index()
keycode warehouse_id
0 1 [WH2, WH1]
drop_duplicates
df.drop_duplicates().groupby('keycode').warehouse_id.apply(list).reset_index()
keycode warehouse_id
0 1 [WH1, WH2]