Pandas基于“v2”计算值

2024-03-29 10:09:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我要数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]
.
.
.

Tags: idfalse密码dataframedfdataindexraw
2条回答
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

如果你的意思是计算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]])

相关问题 更多 >