我有以下数据集:
Code Value
100004 1
1017 1
1017 3
1071 1
1071 3
3039 1
3397 1
3397 3
我能够使用pandasDataFrame.groupby计算值:' Code',as_index = False).agg(' count')
我想计算并同时在新列中记录值。我希望结果看起来像下面的例子
Code NoValues Values
100004 1 1
1017 2 1,3
1071 2 1,3
3039 1 1
3397 2 1,3
是否可以用熊猫来做?
答案 0 :(得分:1)
您可以使用groupby
+ agg
:
df.Value.groupby(df.Code).agg({'Values': lambda g: list(g), 'NumValues': lambda g: len(g)}).reset_index()
例如:
df = pd.DataFrame({'Code': [1004, 1004, 1007], 'Value': [1, 2, 8]})
>>> df.Value.groupby(df.Code).agg({'Values': lambda g: list(g), 'NumValues': lambda g: len(g)}).reset_index()
Code NumValues Values
0 1004 2 [1, 2]
1 1007 1 [3]