2016-01-12 75 views
0

嗨我試圖從整個DataFrame減去DataFramecolumns之一的值。直覺上,這對我來說似乎不是問題,但不知何故我無法弄清楚。從數據框中減去列

下面是代碼:

import pandas as pd 

x = pd.DataFrame({ 
    "a": range(1, 10), 
    "b": range(2, 11), 
    "c": range(11, 20) 
}) 

print x - x['b'] 

而我得到的是令人吃驚:

0 1 2 3 4 5 6 7 8 a b c 
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
7 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
8 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 

代替DataFramecolumns:(A-B),(B-B),(C-B)。

我剛開始玩Python。你能告訴我我錯過了什麼嗎?

謝謝!

+0

你可能想在這裏看到我的回答這說明發生了什麼:http://stackoverflow.com/questions/29954263/what-這個詞廣播意味着在熊貓文件/ 29955358#29955358 – EdChum

回答

2

嘗試:

x.subtract(x['b'], axis=0) 

    a b c 
0 -1 0 9 
1 -1 0 9 
2 -1 0 9 
3 -1 0 9 
4 -1 0 9 
5 -1 0 9 
6 -1 0 9 
7 -1 0 9 
8 -1 0 9 

docs的詳細信息,在axis=0參數,確保了x['B']indexDataFrameindex對齊,而不是columns按默認值。

爲了使-運營商的工作,你必須:

(x.T - x['b']).T 
+0

夠公平的......謝謝Stefan! –

+0

不客氣。 – Stefan

+0

如果您發現答案可以接受,或者您需要任何其他詳細信息,請讓我知道。 – Stefan