簡體   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