我想算v2
这是我的代码
raw_data ={'id': [1, 2, 3, 4,5,1,3,4,7],
'value': [10, 20, 30, 40,10,20,60,6,2],
'v2': [100, 200, 300, 400,1,2,3,4,5]}
df= pd.DataFrame(raw_data)
df= df.groupby('id',as_index=False).agg(lambda x:x.tolist())
这是我想要的数据框
id value v2 v2count firtv2
1 [10,20] [100,2] 2 [100]
2 [20] [200] 1 [200]
3 [30,60] [300,3] 2 [300]
.
.
.
答案 0 :(得分:0)
如果你的意思是计算v2中的元素,它就像:
一样简单df['v2_counts'] = [len(x) for x in list(df['v2'])]
或申请系列:
df['v2_counts'] = df['v2'].apply(lambda x: len(x))
并获取第一个元素(示例中的列表类型):
df['firtv2'] = [[x[0]] for x in list(df['v2'])]
申请变体:
df['v2'].apply(lambda x: [x[0]])
答案 1 :(得分:0)
d1 = df.groupby('id', as_index=False).agg(lambda x: x.tolist())
d1.assign(v2count=d1.v2.str.len(), firstv2=d1.v2.str[:1])
id v2 value firstv2 v2count
0 1 [100, 2] [10, 20] [100] 2
1 2 [200] [20] [200] 1
2 3 [300, 3] [30, 60] [300] 2
3 4 [400, 4] [40, 6] [400] 2
4 5 [1] [10] [1] 1
5 7 [5] [2] [5] 1