2016-09-29 39 views
0

我有一個數據框,其中一列有一個郵編列表,另一個郵箱有與郵政編碼相對應的屬性值。我想根據相應的郵政編碼總結每行中的屬性值。使用Pandas在列中總結值

因此,舉例來說:

zip value 
2210 $5,000 
2130 $3,000 
2210 $2,100 
2345 $1,000 

我會那麼加起來值

$5,000 + $2,100 = $7,100 

,並獲得對郵編2210 $ 7,100個總屬性值。

在這方面的任何幫助將不勝感激

回答

1

您需要:

df 
    zip value 
0 2210 5000 
1 2130 3000 
2 2210 2100 
3 2345 1000 

df2 = df.groupby(['zip'])['value'].sum() 

df2 
zip value 
2130 3000 
2210 7100 
2345 1000 
Name: value, dtype: int64 

你可以閱讀更多關於它here

您還需要刪除列值中的$符號。對於您可以使用沿着以下線的東西,而最初讀數據框:

df = pd.read_csv('zip_value.csv', header=0,names=headers,converters={'value': lambda x: float(x.replace('$',''))}) 

編輯:改變根據註釋代碼。 要GROUPBY使用後重置索引:

df2 = df.groupby(['zip'])['value'].sum().reset_index() 

然後用ZIP值刪除特定列,比如2135,你需要

df3 = df2[df2['zip']!= 2135] 
+0

謝謝!我還有一個問題。如果我想刪除特定的郵政編碼及其相應的值(在總結所有內容後)該怎麼辦? – dancemc15

+0

您可以使用'df3 = df2 [df2 ['zip']!= value_not_needed]'其中value_not_needed是您不想要的郵政編碼 –

+0

對不起,我有點困惑。假設我想要zip 2130並且它的價值消失了。我如何使用上面編寫的代碼表明這一點? – dancemc15