2017-03-02 112 views
2

我有一個熊貓數據幀:大熊貓據幀減法造成南

>>> X_df.shape 
Out[35]: (177, 2762) 
>>> X_df.ix[0:5,1000:1005] 
Out[40]: 
       1000 1001 1002 1003 1004 1005 
2016-01-04 119.225  nan  nan  nan  nan  nan 
2016-01-05 119.225 119.189 119.177 119.160 119.203 119.220 
2016-01-06 119.175 119.175  nan 119.204 119.208 119.221 
2016-01-07 118.532  nan 118.542 118.529  nan 118.534 
2016-01-08 117.861 117.820 117.762  nan 117.686 117.709 

我創建的沿着每行第一個差異的平均值:

>>> mu = (X_df.diff(1,axis=1)).mean(axis=1) 
>>> mu.head() 
Out[42]: 
2016-01-04 -0.001 
2016-01-05 -0.001 
2016-01-06 -0.000 
2016-01-07 -0.000 
2016-01-08 -0.000 
dtype: float64 

然後,如果我嘗試從每個值中減去這意味着,我得到的所有的NaN:

>>> (X_df.diff(1,axis=1)-mu).ix[0:5,1000:1005] 
Out[51]: 
      1000 1001 1002 1003 1004 
2016-01-04 nan nan nan nan nan 
2016-01-05 nan nan nan nan nan 
2016-01-06 nan nan nan nan nan 
2016-01-07 nan nan nan nan nan 
2016-01-08 nan nan nan nan nan 

減法

不同的方式
>>> ((X_df.diff(1,axis=1).subtract(mu,axis=1))).ix[0:5,1000:1005] 
Out[52]: 
      1000 1001 1002 1003 1004 
2016-01-04 nan nan nan nan nan 
2016-01-05 nan nan nan nan nan 
2016-01-06 nan nan nan nan nan 
2016-01-07 nan nan nan nan nan 
2016-01-08 nan nan nan nan nan 

我獲得使用mu[:,]代替mu

有沒有辦法來解決這個相同的結果?

回答

2

您需要subaxis=0

a = (X_df.diff(1,axis=1)) 
print (a) 
      1000 1001 1002 1003 1004 1005 
2016-01-04 NaN NaN NaN NaN NaN NaN 
2016-01-05 NaN -0.036 -0.012 -0.017 0.043 0.017 
2016-01-06 NaN 0.000 NaN NaN 0.004 0.013 
2016-01-07 NaN NaN NaN -0.013 NaN NaN 
2016-01-08 NaN -0.041 -0.058 NaN NaN 0.023 

print (a.sub(a.mean(axis=1), axis=0)) 
#sub same as subtract, only less typing 
#print (a.subtract(a.mean(axis=1), axis=0)) 
      1000  1001  1002 1003  1004  1005 
2016-01-04 NaN  NaN  NaN NaN  NaN  NaN 
2016-01-05 NaN -0.035000 -0.011000 -0.016 0.044000 0.018000 
2016-01-06 NaN -0.005667  NaN NaN -0.001667 0.007333 
2016-01-07 NaN  NaN  NaN 0.000  NaN  NaN 
2016-01-08 NaN -0.015667 -0.032667 NaN  NaN 0.048333 
+0

是的,我注意到,too..but不明白爲什麼。是不是軸= 0意味着列? – dayum

+0

不,這是索引。列是默認值'軸= 1' – jezrael

+1

也許幫助[這](http://pandas.pydata.org/pandas-docs/stable/basics.html#matching-broadcasting-behavior) – jezrael