python - Pandas 按列大小总和分组

标签 python pandas dataframe group-by

我尝试使用 pandas 处理多个巨大的 tsv 文件。我想按“col3”和“col5”分组。我试过这个:

import pandas as pd
df = pd.read_csv('filename.txt', sep = "\t")
g1 = df.groupby(['col3', 'col5']).size()

到目前为止它工作正常并打印如下输出:

yes AB12 1
    FG14 1
no  nn18 1
    pp76 1

我希望我的输出是这样的:

yes 2
no  2

我希望能够聚合来自多个文件的输出,即能够一次对所有文件中的这两列进行分组,并打印一个包含"is"或"is"的总出现次数的公共(public)输出“否”或该属性可能是什么。

PS- 假设我在 col3 中有重复的 col5 中的给定值,我希望将它们合并为一个,而不是计算两次。换句话说,如果 AB12 有两行并且两行在 col5 中都是 yes,我希望脚本将其计为一个而不是两个。

更新:

我通过以下操作删除了重复项:

g2 = df.drop_duplicates(['col3', 'col5'])
g3 = g2.groupby(['col3', 'col5']).size().sum(level=0)
print g3

我现在想同时对多个文件使用 groupby。如果一个文件没有这些列之一,它应该被跳过,我们应该转到下一个文件。

最佳答案

sum() 接受一个 level 参数,所以你可以这样写

df.groupby(['col3', 'col5']).size().sum(level=0)

为了对您的 MultiIndex 的第一级(此处为“col3”)的组大小求和。例如:

>>> df
          a    
yes AB12  1
    FG14  2
no  nn18  3
    pp76  1

>>> df.sum(level=0)
     a    
no   4
yes  3

关于python - Pandas 按列大小总和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29285633/

相关文章:

python - 如何获取和设置具有二维矩阵列索引的一维数组?

python - 同时执行操作与排队执行操作

python - 如何使用 python 在 docx 中查找列表?

python - Pandas.plotting 不显示图形

python - 使用索引标签创建新的Pandas DataFrame(iloc错误: Flexible Type)

python - pandas 系列中重复的 NaN 集合

python - 如何按特定时间窗口对数据进行分组,其中第二个时间是第二天

python - 动态评估 Pandas 公式中的表达式?

R 名称清理以获得正确的唯一变量

r - 使用with()从R数据帧访问任意列