[英]pandas group by sum of column size
我有多個巨大的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
我希望能夠聚合多個文件的輸出,即能夠同時按所有文件中的這兩列進行分組,並打印一個常見輸出,其總出現次數為“是”或“否”或者那個屬性可能是什么。
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
在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.