2017-09-04 78 views
1

工作,我有以下數據集:總和與GROUPBY不爲我用熊貓

enter image description here

我想​​(名)用熊貓來總結列cantidad(金額)分組,所以我曾嘗試: enter image description here

第一行是由於驚訝的 「安娜」 是一個共同的名字,所以我檢查: enter image description here

好吧,那麼...「Ana」的總數是434而不是1.發生了什麼?我究竟做錯了什麼?

+0

真的很有趣。什麼返回'resume = historical_names.groupby('nombre')['cantidad']。sum()'? – jezrael

+0

@jezrael,謝謝你的關注。結果是一樣的。您可以從[這裏]下載數據集(http://datos.gob.ar/dataset/b8418d41-8e0c-4e85-8aa8-80d51a840132/resource/811bf426-fc36-4f20-b2e1-59bdbb938153/download/nombres-1920- 1924.csv) –

+0

@JohnGalt當我回到我的房子時,我會補充一點。我檢查了dtypes,並且得到了對象(nombre),np.int64(cantidad)和np.int64(anio) –

回答

2

你需要skipinitialspace=True因爲​​列中的值有尾隨空格 - 所以'Ana'' Ana'' Ana ' ...被單獨分組:

historical_names = pd.read_csv('nombres-1920-1924.csv', skipinitialspace =True) 
print (historical_names.head()) 

resume = historical_names.groupby('nombre')['cantidad'].sum() 
print (resume['Ana']) 
437 

a = historical_names.loc[historical_names['nombre'] == 'Ana', 'cantidad'] 
print (a) 
5  113 
10340 138 
18776  1 
23114 183 
26523  2 
Name: cantidad, dtype: int64 

a = historical_names.loc[historical_names['nombre'] == 'Ana', 'cantidad'].sum() 
print (a) 
437 

historical_names = pd.read_csv('nombres-1920-1924.csv') 
print (historical_names.head()) 

historical_names['nombre'] = historical_names['nombre'].str.strip() 
resume = historical_names.groupby('nombre')['cantidad'].sum() 
print (resume['Ana']) 
437 

historical_names = pd.read_csv('nombres-1920-1924.csv') 
print (historical_names.head()) 

resume = historical_names.groupby('nombre')['cantidad'].sum() 
print (resume['Ana']) 
434 

a = historical_names.loc[historical_names['nombre'] == 'Ana', 'cantidad'] 
print (a) 
5  113 
10340 138 
23114 183 
Name: cantidad, dtype: int64 

a = historical_names.loc[historical_names['nombre'] == 'Ana', 'cantidad'].sum() 
print (a) 
434 
+0

像往常一樣,速度非常快。 '我想出了historical_names.nombre = historical_names.nombre.apply(lambda x:x.strip())'你有什麼洞察力來分享這個'apply'和'.str.strip( )'? – Uvar

+1

@Uvar - 有不同的處理'NaN'str.strip()'處理'NaN's,但'apply(lambda x:x.strip())'不是。 – jezrael