我总共有5列,我希望在两列上分组,并希望获得列表中的其他列。我正在使用python pandas。 我在这里给出一个例子
BN PN tempC tempF humidity
0 7363311 1 28 82 73
1 7363311 2 27 81 73
2 7363311 3 27 81 73
3 7363311 4 27 81 73
4 7363311 4 27 81 73
5 7363311 5 27 81 73
8 7363311 7 27 81 73
9 7363311 7 27 81 74
并且输出应该如下所示
BN PN tempC tempF humidity
7363311 1 28 82 73
2 27 81 73
3 27 81 73
4 [27,27] [81,81] [73,73]
5 27 81 73
7 [27,27] [81,81] [73,74]
我使用下面的代码按其分组
df.groupby(['BN','PN'])
答案 0 :(得分:2)
首先,必须汇总tuple
,然后转换为list
s:
df = df.groupby(['BN','PN']).agg(tuple).applymap(list)
print (df)
tempC tempF humidity
BN PN
7363311 1 [28] [82] [73]
2 [27] [81] [73]
3 [27] [81] [73]
4 [27, 27] [81, 81] [73, 73]
5 [27] [81] [73]
7 [27, 27] [81, 81] [73, 74]
如果希望list
与scalar
的组合添加if-else
声明:
df = df.groupby(['BN','PN']).agg(tuple).applymap(lambda x: x[0] if len(x) == 1 else list(x))
print (df)
tempC tempF humidity
BN PN
7363311 1 28 82 73
2 27 81 73
3 27 81 73
4 [27, 27] [81, 81] [73, 73]
5 27 81 73
7 [27, 27] [81, 81] [73, 74]