import pandas as pd
df = pd.DataFrame({'A': ['x', 'x', 'x','y','y']
, 'B': ['a', 'c', 'c','b','b']})
print (df)
A B
0 x a
1 x c
2 x c
3 y b
4 y b
df['size'] = df.groupby(['A', 'B'])['A'].transform('size')
print (df)
A B size
0 x a 1
1 x c 2
2 x c 2
3 y b 2
4 y b 2
如果需要在聚合df-len的df中设置列名,则显然与之前不同:
import pandas as pd
df = pd.DataFrame({'A': ['x', 'x', 'x','y','y']
, 'B': ['a', 'c', 'c','b','b']})
print (df)
A B
0 x a
1 x c
2 x c
3 y b
4 y b
df = df.groupby(['A', 'B']).size().reset_index(name='Size')
print (df)
A B Size
0 x a 1
1 x c 2
2 y b 2
你需要^{} ^{} -
len
的df
和以前一样:注意:
这里需要在} count
groupby
之后添加一列,否则会出现错误。因为^{NaN
s也是,所以使用什么列并不重要。所有列工作相同。如果需要在聚合
df
-len
的df
中设置列名,则显然与之前不同:df.groupby(...)
的结果不是数据帧。若要返回数据帧,必须对每个组应用函数、转换组的每个元素或筛选组。似乎需要一个数据帧,它包含(1)所有原始数据在
df
中,以及(2)每个组中有多少数据的计数。这些东西有不同的长度,因此如果它们需要进入同一数据帧,则需要冗余地列出大小,即每个组中的每一行。(旁白:如果您可以显示简洁的示例输入和预期的结果,这将很有帮助。)
DataFrameGroupBy对象的
.size()
内置方法实际上返回的是具有组大小的Series对象,而不是DataFrame。如果您想要一个列为组大小(由组索引)且具有自定义名称的数据帧,可以使用.to_frame()
方法并使用所需的列名作为其参数。如果希望组再次成为列,可以在末尾添加一个
.reset_index()
。相关问题 更多 >
编程相关推荐