Python 熊猫可以使用groupby的列表吗?
输出为:Python 熊猫可以使用groupby的列表吗?,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,输出为: import pandas as pd import numpy as np rng = np.random.RandomState(0) df = pd.DataFrame({'key':['A', 'B', 'C', 'A', 'B', 'C'], 'data1': range(6), 'data2': rng.randint(0, 10, 6)}, columns=
import pandas as pd
import numpy as np
rng = np.random.RandomState(0)
df = pd.DataFrame({'key':['A', 'B', 'C', 'A', 'B', 'C'],
'data1': range(6),
'data2': rng.randint(0, 10, 6)},
columns=['key', 'data1', 'data2'])
df
key data1 data2
0 A 0 5
1 B 1 0
2 C 2 3
3 A 3 3
4 B 4 7
5 C 5 9
L = [0, 1, 0, 1, 2, 0]
print(df.groupby(L).sum())
我需要一个清楚的解释,拜托?!
L
中的0、1和2是什么?它们是df
的键
列吗?或者它们是df
的索引标签?以及groupby如何根据L
进行分组 在您的示例中,L是整数列表。正如你所说:看看这个整数列表,根据这些唯一的整数对我的df进行分组
我认为将其可视化是有意义的(注意df没有L列-我只是为了可视化添加了它):
groupby L means-获取唯一值(在本例中为0,1和2)并对数据1和数据2求和。因此,当L=0时,data1的结果将是data1:0+2+5=7(以此类推)
最终结果将是:
data1 data2
0 7 17
1 4 3
2 4 7
您可以使用列表对数据框中的观察值进行分组。例如,假设你有几个人的身高:
data1 data2
0 7 17
1 4 3
2 4 7
在其他地方,您收到了他们指定的组:
names height
0 John 180
1 Mark 180
2 Fred 180
3 Julia 160
4 Mary 160
您不需要将新列连接到数据帧
,只需将它们分组即可。您可以使用列表来完成以下工作:
sex = ['man', 'man', 'man', 'woman', 'woman']
您可以在这里看到它的工作原理:
height
man 180
woman 160
在L中,它将0键分组,即ACC,索引0,2m5。1键为BA,索引1,3,两键为B,索引4
这是因为L键对齐:
In [6002]: list(df.groupby(L))
Out[6002]:
[(0, key data1 data2
0 A 0 5
2 C 2 3
5 C 5 9),
(1, key data1 data2
1 B 1 0
3 A 3 3),
(2, key data1 data2
4 B 4 7)]
我希望这是有意义的L是一个用于对数据帧进行分组的值列表。如果用a替换所有0,用b替换1,用c替换2,则会得到完全相同的结果。它们不必是a,b,c,它们也可以是r,p,l或其他任何形式。然而,L的长度应该与数据帧的长度相同,如果不是,它将不起作用。非常感谢!已经两天了,我想不出来了。“我现在知道了。”帕里萨·扎里这就是为什么Stackoverflow会在这里。很高兴我能帮忙
df.groupby(sex).mean()
height
man 180
woman 160
In [6006]: df.groupby(L).agg(list)
Out[6006]:
key data1 data2
0 [A, C, C] [0, 2, 5] [5, 3, 9]
1 [B, A] [1, 3] [0, 3]
2 [B] [4] [7]
In [6002]: list(df.groupby(L))
Out[6002]:
[(0, key data1 data2
0 A 0 5
2 C 2 3
5 C 5 9),
(1, key data1 data2
1 B 1 0
3 A 3 3),
(2, key data1 data2
4 B 4 7)]
df['L'] = L
key data1 data2 L
0 A 0 5 0
1 B 1 0 1
2 C 2 3 0
3 A 3 3 1
4 B 4 7 2
5 C 5 9 0