熊猫groupby as列表同时返回agg和apply函数为空

时间:2019-04-01 12:20:18

标签: python pandas list dataframe pandas-groupby

当尝试基于列组(即“ master_mac”和“ slave_mac”)以列表形式返回“ rssi”列时,pandas数据框返回空,下面是我的输入数据框

   master_mac    slave_mac        uuid           rawData   rssi            
0  ac233fc01403  ac233f26492b     e2c56db5       NaN       -23                                                  
1  ac233fc01403  ac233f26492b     e2c56db5       NaN       -28                                                  
2  ac233fc01403  ac233f26492b     e2c56db5       NaN       -32                                                   
3  ac233fc01403  ac233f26492b     e2c56db5       NaN       -37
4  ac233fc01403  e464eecba5eb     NaN            590080    -25         
5  ac233fc01403  ac233f26492b     e2c56db5       NaN       -29 
6  ac233fc01403  ac233f26492b     e2c56db5       NaN       -31                                                    
7  ac233fc01403  ac233f26492b     e2c56db5       NaN       -30

最终结果应该是

   master_mac    slave_mac     uuid     rawData  rssi            
0  ac233fc01403  ac233f26492b  e2c56db5 NaN      [-23,-28,-32,-37,-29,-31,-30]                                                  
1  ac233fc01403  e464eecba5eb     NaN   590080   [-25]         

在我使用时,

df.groupby(['master_mac', 'slave_mac','uuid','rawData'])['rssi'].apply(list)

相同的回报

Series([], Name: rssi, dtype: float64)

使用Apply时,

df.groupby(['master_mac','slave_mac','uuid','rawData']).apply(lambda x: x['rssi'].values)

它返回为

Empty DataFrame
Columns: []
Index: []

使用agg时,

df.groupby(['master_mac','slave_mac','uuid','rawData']).agg(lambda x: list(x))

返回为

Empty DataFrame
Columns: []
Index: []

1 个答案:

答案 0 :(得分:1)

尝试

df.groupby(['master_mac', 'slave_mac','uuid','rawData'])['rssi'].agg(lambda x: list(x))