2016-01-23 106 views
1

我想合計一個特定列的值。 我從CSV加載的數據框,包含以下數據:在Panda Dataframe的列中添加值

Date Item Count Price per Unit  Sales 
0 1/21/16 Unit A  40   $1.50 $60.00 
1 1/22/16 Unit A  20   $1.50 $30.00 
2 1/23/16 Unit A 100   $1.50 $150.00 

我想補充了所有的銷售。我已經嘗試過:

print sales_df.groupby(["Sales"]).sum() 

但是它並沒有增加銷量。我能做些什麼來完成這項工作?

+0

您是否要總結銷售額?你的'銷售'列有一個dtype對象,'sum'對象('str')是串聯的。你需要總結價值得到240? –

+0

是的,正確的,我想要的值是240.我想總和不concat。 –

回答

1

IIUC您需要對Sales列中的值進行求和。首先,您需要刪除$str.replace,然後轉換爲數字與pd.to_numeric。那麼你可以使用sum。一個內膽:一步

pd.to_numeric(df.Sales.str.replace("$", "")).sum() 

和步驟:

In [35]: df.Sales 
Out[35]: 
0  $60.00 
1  $30.00 
2 $150.00 
Name: Sales, dtype: object 

In [36]: df.Sales.str.replace("$", "") 
Out[36]: 
0  60.00 
1  30.00 
2 150.00 
Name: Sales, dtype: object 

In [37]: pd.to_numeric(df.Sales.str.replace("$", "")) 
Out[37]: 
0  60 
1  30 
2 150 
Name: Sales, dtype: float64 

In [38]: pd.to_numeric(df.Sales.str.replace("$", "")).sum() 
Out[38]: 240.0 

pd.to_numericpandas版本> = 0.17.0工作。如果您使用的是舊版本,請查看convert_object(convert_numeric=True)

+0

太棒了,那有效。感謝您的一步一步也。 –

+0

在你的例子中,列名是硬編碼的。我怎樣才能重寫這個欄目以保持動態? –

+0

您也可以使用'df ['Sales']'或'var ='Sales'','df [var]' –

相關問題