gpt4 book ai didi

python - Pandas 聚合 - 列之间的计算

转载 作者:行者123 更新时间:2023-11-28 22:31:11 26 4
gpt4 key购买 nike

考虑这个数据框:

np.random.seed(0)
df_agg = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'C' : np.random.choice(2, 8)})

我想计算按 A 分组的以下列:

  • 元素个数
  • C 中 True 的数量
  • C 中的 True 百分比
  • C 中错误的数量
  • C 中错误的百分比>

前三个元素使用聚合很简单:

aggregations = {
'C': {
'Number of elements': 'count',
'Number of True':sum,
'Percentage of True': 'mean'
}
}
df_tab = df_agg.groupby('A').agg(aggregations)
print df_tab

然后他输出:

                     C                                  
Number of elements Number of True Percentage of True
A
bar 3 2 0.666667
foo 5 4 0.800000

但是我不知道如何在同一个聚合中计算由其他列组合而成的列 - 错误的数量和百分比。

作为解决方法,我可以这样做:

df_tab = df_tab['C'] #flatten
df_tab['Number of False'] = df_tab['Number of elements'] - df_tab['Number of True']
df_tab['Percentage of False'] = 1 - df_tab['Percentage of True']

这会产生我想要的结果,但我想知道如何一次完成。

     Number of elements  Number of True  Percentage of True  Number of False  Percentage of False
A
bar 3 2 0.666667 1 0.333333
foo 5 4 0.800000 1 0.200000

最佳答案

您可以使用 lambda 函数:

In [43]: aggregations = {
...: 'C': {
...: 'Number of elements': 'count',
...: 'Number of True':sum,
...: 'Percentage of True': 'mean',
...: 'Number of False': lambda x: len(x) - np.count_nonzero(x),
...: 'Percentage of False': lambda x: 1 - x.mean()
...: }
...: }
...:
...: df_agg.groupby('A').agg(aggregations)
...:
Out[43]:
C
Number of False Percentage of False Number of True Number of elements Percentage of True
A
bar 1 0.333333 2 3 0.666667
foo 1 0.200000 4 5 0.800000

关于python - Pandas 聚合 - 列之间的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41720579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com