我有以下Pandas Dataframe :
import pandas as pd
pd.DataFrame({'id': [1,1,1,1,2,2,2], 'col': ['a','b','c','c','a','b','d']})
id col
0 1 a
1 1 b
2 1 c
3 1 c
4 2 a
5 2 b
6 2 d
我想添加一个新列,该列将包含col
x x x的唯一值列表
结束 Dataframe 如下所示:
pd.DataFrame({'id': [1,1,1,1,2,2,2], 'col': ['a','b','c','c','a','b','d'],
'col2': [['a','b','c'],['a','b','c'],['a','b','c'],['a','b','c'],
['a','b','d'],['a','b','d'],['a','b','d']]})
id col col2
0 1 a [a, b, c]
1 1 b [a, b, c]
2 1 c [a, b, c]
3 1 c [a, b, c]
4 2 a [a, b, d]
5 2 b [a, b, d]
6 2 d [a, b, d]
我怎么能这么做?
2条答案
按热度按时间os8fio9y1#
使用
GroupBy.agg
和reindex
的可能解决方案:输出:
gcuhipw92#
对于按顺序删除重复值的列表,使用lambda函数中的
dict.fromkeys
技巧,对于新列,使用Series.map
:或者先按
DataFrame.drop_duplicates
删除重复项,然后聚合list
:如果可能,使用
ndarray
s代替list
s,使用DataFrameGroupBy.nunique
: