繁体   English   中英

Pandas Groupby,MultiIndex,多列

[英]Pandas Groupby, MultiIndex, Multiple Columns

我只是使用.transform()创建一些列来计算一些条目。 我使用了这个参考。

例如:

          userID deviceName  POWER_DOWN  USER  LOW_RSSI  NONE  CMD_SUCCESS  
0         24      IR_00          85     0        39     0            0   
1         24      IR_00          85     0        39     0            0   
2         24      IR_00          85     0        39     0            0   
3         24      IR_00          85     0        39     0            0   
4         25     BED_08           0   109        78     0            0   
5         25     BED_08           0   109        78     0            0   
6         25     BED_08           0   109        78     0            0   
7         24      IR_00          85     0        39     0            0   
8         23      IR_09           2     0         0     0            0   
9         23     V33_17           3     0         2     0          134   
10        23     V33_17           3     0         2     0          134   
11        23     V33_17           3     0         2     0          134   
12        23     V33_17           3     0         2     0          134   

我想按用户ID和设备名称对它们进行分组? 这样看起来像:

          userID deviceName  POWER_DOWN  USER  LOW_RSSI  NONE  CMD_SUCCESS  
0         23      IR_09           2     0         0     0            0
1                V33_17           3     0         2     0          134
2         24      IR_00          85     0        39     0            0
3         25     BED_08           0   109        78     0            0

我还希望它们按用户ID排序,并可能使用户ID和deviceName成为多索引。

我尝试了df = df.groupby(['userID', 'deviceName'])但返回了<pandas.core.groupby.DataFrameGroupBy object at0x00000249BBB13DD8> 不是数据框。

对不起,对不起 我不知道如何复制和输入Jupyter笔记本。

我相信需要drop_duplicatessort_values

df1 = df.drop_duplicates(['userID', 'deviceName']).sort_values('userID')
print (df1)
   userID deviceName  POWER_DOWN  USER  LOW_RSSI  NONE  CMD_SUCCESS
8      23      IR_09           2     0         0     0            0
9      23     V33_17           3     0         2     0          134
0      24      IR_00          85     0        39     0            0
4      25     BED_08           0   109        78     0            0

如果要创建MultiIndex添加set_index

df1 = (df.drop_duplicates(['userID', 'deviceName'])
         .sort_values('userID')
         .set_index(['userID', 'deviceName']))
print (df1)
                   POWER_DOWN  USER  LOW_RSSI  NONE  CMD_SUCCESS
userID deviceName                                               
23     IR_09                2     0         0     0            0
       V33_17               3     0         2     0          134
24     IR_00               85     0        39     0            0
25     BED_08               0   109        78     0            0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM