基于'v2'的熊猫计数值

时间:2017-04-15 19:50:47

标签: python pandas dataframe

我想算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]
.
.
.

2 个答案:

答案 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