如何在groupby中获取数据,例如具有熊猫的SQL。

时间:2018-10-15 10:29:32

标签: python-3.x pandas

我有如下数据。

id, name, password, note, num
 1, hoge, xxxxxxxx, aaaaa, 2     
 2, hoge, xxxxxxxx, bbbbb, 1     
 3, moge, yyyyyyyy, ccccc, 2     
 4, zape, zzzzzzzz, ddddd, 3     

我想使用groupby使用相同的名称和密码来制作framedata。在这种情况下,将1,hoge和2,hoge视为相同的数据。那我想算3  来自num列。 我尝试如下。

df1 = pd.read_csv("sample.csv")
df2 = df1.groupby(['name','password']).count()
print(df2[df2[note] > 1])

它是这样的

name, password, note, num
hoge, xxxxxxxx, 2, 2     

如何获取num值的总和?

1 个答案:

答案 0 :(得分:0)

我相信您需要GroupBy.sizecount来排除transformNaN行,而新Series的大小与原始DaatFrame相同,因此可以使用sum进行过滤:

s = df1.groupby(['name','password'])['note'].transform('size')

s = df1.groupby(['name','password'])['note'].transform('count')

out = df1.loc[s > 1, 'num'].sum()
print (out)
3

如果只想计算DataFrame.duplicated过滤的重复行,并指定检查重复项的列:

out = df1.loc[df1.duplicated(['name','password'], keep=False), 'num'].sum()

print (out)
3