2014-03-01 39 views
1
Campaign ID Revenue Total 
601   $2,690 
601   $817 
601   $0 
649   $4,339 
10901 $7,273 

我有一張桌子在上面。想要對數據應用groupby函數並應用總和(超過revenue_total)。因爲revenue_total是對象數據類型,所以熊貓給出NA值。任何幫助Python - Pandas:如何將aggfunc應用於貨幣格式的數據?

import pandas as pd 
path = r"C:\Users\roy\Google Drive\Work\Backlog\test.csv" 
df = pd.read_csv(path) 
df[['Campaign ID','Revenue Total']].head() 
df.groupby(['Campaign ID'])[['Revenue Total']].sum() 
+0

你是如何創建表框?您需要發佈您的代碼,以便人們可以看到問題出在哪裏 –

+0

這是我的代碼: import pandas as pd path = r「C:\ Users \ roy \ Google Drive \ Work \ Backlog \ test.csv」 df = pd.read_csv(path) df [['Product ID','Revenue Total']]。head() df.groupby(['Product ID'])[['Revenue Total']]。sum ) 並且輸出的收入總額中的值全部爲NaN – user3367015

+0

應將代碼作爲編輯添加到問題中(並放入代碼塊中)。我不知道足夠的Python來爲你編輯,但對於潛在的回答者來說,它並不是很有幫助。 – BradleyDotNET

回答

0

如果您的數據文件看起來像

Campaign ID Revenue Total 
601   $2,690 
601   $817 
601   $0 
649   $4,339 
10901 $7,273 

然後,你可以刪除$和逗號,並用它解析爲數據幀

import pandas as pd 

df = pd.read_csv('data', sep='\s{2,}', 
       converters={'Revenue Total':lambda x: x.lstrip('$').replace(',','')}) 

Campaign ID Revenue Total 
0   601   2690 
1   601   817 
2   601    0 
3   649   4339 
4  10901   7273 

你可能想嘗試強制t加

converters={'Revenue Total':lambda x: x.lstrip('$').replace(',','')} 

您的電話pd.read_csv。這就是剝離$和逗號。

您可能不需要sep='\s{2,}' - 這只是爲了讓我讀取數據給出了我在以上顯示的格式。你的格式可能不同,但你沒有發佈,所以我不知道它是什麼...

1

您的數據文件有問題。

如果你這樣做了以下

  • 刪除 「」 和 「$」 從美元數字
  • 使用 '' 作爲獨立

然後運行代碼...

import pandas as pd 
path = r"C:\Users\roy\Google Drive\Work\Backlog\test.csv" 
df = pd.read_csv(path) 
df[['Campaign ID','Revenue Total']].head() 
print df.groupby(['Campaign ID'])[['Revenue Total']].sum() 

會給這個結果

   Revenue Total 
Campaign ID    
601     3507 
649     4339 
10901     7273 
+0

我想要標題= 0。問題是收入總額的dtype是object和group by無法在其上執行agfunc。 – user3367015

+0

我已經更新了我的答案。此外,作爲提醒新手進行計算的人,重要的是你要注意和/或接受答案。在這裏看到解釋:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work謝謝。 –

+0

好吧所以問題是刪除$和,。那我該怎麼做 – user3367015