2017-09-04 16 views
1

を使用して私のために動作しません:合計とGROUPBYは、私は、次のデータセット持っているパンダ

enter image description here

を私はパンダを使用して​​(名)によってグループ化列cantidad(量)を合計したいので、私は試してみました: enter image description here

最初の行は、共通の名前は "アナ" に起因して驚きましたので、私は検査: enter image description here

さて、 "アナ"の合計は434ではありません。何が起きていますか?私は間違って何をしていますか?列​​の値は空白を末尾にしたため

+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- –

+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

いつものように、非常に高速です。 '私はhistory_names.nombre = history_names.nombre.apply(lambda x:x.strip())を思いつきました。この' apply'と '.str.strip()のパフォーマンスの違いに関連する、 ) '? – Uvar

+1

@Uvar - NaN's - 'str.strip()' NaN'を処理する違いがありますが、 'apply(lambda x:x.strip())'は処理されません。 – jezrael

関連する問題