【发布时间】:2017-09-17 04:39:49
【问题描述】:
我有多个巨大的 tsv 文件,我正在尝试使用 pandas 进行处理。我想按“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
我希望能够聚合来自多个文件的输出,即能够一次按所有文件中的这两列进行分组,并打印一个常见的输出,其中出现“是”或'no' 或任何可能的属性。
PS-假设我在 col3 中对 col5 中的给定值有重复项,我希望将它们合并为一个并且不计算两次。换句话说,如果 AB12 有两行并且两行在 col5 中都是 yes,我希望脚本将其计为一而不是二。
更新:
我通过以下方式删除了重复项:
g2 = df.drop_duplicates(['col3', 'col5'])
g3 = g2.groupby(['col3', 'col5']).size().sum(level=0)
print g3
我现在想一次对多个文件使用 groupby。如果一个文件没有这些列之一,它应该被跳过,我们应该转到下一个文件。
【问题讨论】:
-
不就是
df.groupby(['col3']).size()吗? -
@EdChum 否。这样,它不会合并 col5 中任何可能的重复项。
-
@EdChum 看起来我错了,按两个列分组并不能消除重复项。请找到修改后的问题。
-
对不起,如果您有其他问题,请发布其他问题,不要继续扩大您的要求
-
@EdChum 我已将它发布在我的原始问题本身中(而不是在以后的扩展中),我需要在多个文件上执行此操作。 Update 下面的任何内容都是我的扩展部分。如果您认为这不是我应该这样做的方式,我可以提出另一个问题。对不起。
标签: python pandas dataframe group-by