Python 按列大小之和分组

Python 按列大小之和分组,python,pandas,dataframe,group-by,Python,Pandas,Dataframe,Group By,我有多个巨大的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 我希望能够

我有多个巨大的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
我希望能够聚合多个文件的输出,也就是说,能够一次按所有文件中的这两列进行分组,并打印一个公共输出,总出现次数为“是”或“否”或任何该属性

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

更新:

我通过以下操作删除了副本:

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)
为了求多索引第一级的组大小之和(此处为“col3”)。例如:

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

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

在ajcr的答案和附加行的帮助下,我能够通过执行以下操作来删除基于两列的重复项

import pandas as pd
df = pd.read_csv('filename.txt', sep = "\t")
g2 = df.drop_duplicates(['col3', 'col5'])
g3 = g2.groupby(['col3', 'col5']).size().sum(level=0)
print g3

这不就是
df.groupby(['col3']).size()
?@EdChum No.这样,它就不会在col5中合并任何可能的重复项。@EdChum看起来我错了,按两个col分组并不能消除重复项。请查找已编辑的问题。抱歉,如果您还有其他问题,请发布其他问题,不要继续扩展您的内容requirements@EdChum我在我最初的问题中(不是在以后的扩展中)提到了我需要在多个文件上做这件事。下面的任何更新都是我的扩展部分。如果你认为我不应该这样做,我可以提出另一个问题。我很抱歉。