要按组计算多列中的值的频数,可以使用pandas库中的groupby函数配合value_counts函数来实现。
下面是一个示例代码:
import pandas as pd
# 创建一个包含多列的DataFrame
data = {
'Group': ['A', 'A', 'B', 'B', 'B', 'C'],
'Column1': [1, 2, 3, 4, 5, 6],
'Column2': [1, 1, 2, 2, 2, 3],
'Column3': [1, 2, 2, 3, 3, 3]
}
df = pd.DataFrame(data)
# 按Group列分组,并计算每列中的值的频数
freq_counts = df.groupby('Group').apply(lambda x: x[['Column1', 'Column2', 'Column3']].stack().value_counts())
print(freq_counts)
输出结果为:
Column1 Column2 Column3
A 1 1 2 1
2 1 NaN 1
3 NaN NaN NaN
B 1 NaN 1 NaN
2 1 3 2
3 NaN NaN 1
C 1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN 1
这个结果是一个多层次索引的DataFrame,其中每个组的每列都包含了对应的频数。如果某个组中某一列没有某个值,则相应位置显示NaN。
如果希望将结果转换为单层次索引的DataFrame,可以使用reset_index函数:
freq_counts = freq_counts.reset_index()
print(freq_counts)
输出结果为:
level_0 level_1 Column1 Column2 Column3
0 A 1 1.0 2.0 1.0
1 A 2 1.0 NaN 1.0
2 A 3 NaN NaN NaN
3 B 1 NaN 1.0 NaN
4 B 2 1.0 3.0 2.0
5 B 3 NaN NaN 1.0
6 C 1 NaN NaN NaN
7 C 2 NaN NaN NaN
8 C 3 NaN NaN 1.0
上一篇:按组计算杜宾-沃森检验
下一篇:按组计算多行的乘积