2017-10-15 85 views
1

我刚刚开始使用熊猫,所以我可能会失去一些重要的东西,但我似乎无法成功减去我正在使用的两列。我有在Excel电子表格中,我输入如下:如何用熊猫减去两个部分列?

df = pd.read_excel('/path/to/file.xlsx',sheetname='Sheet1') 

我做df.head()当表看起来类似于以下内容:

 a   b  c  d 
0  stuff  stuff stuff stuff 
1  stuff  stuff stuff stuff 
2  data  data  data  data 
... ...  ...  ...  ... 
89 data  data  data  data 

我不关心“的东西;”我想减去两列数据,并将其作为自己的列。因此,它似乎是显而易见的,我应该剪掉我不感兴趣,并与剩下的工作行,所以我曾尝试以下:

dataCol1 = df.ix[2:,0:1] 
dataCol2 = df.ix[2:,1:2] 
print(dataCol1.sub(dataCol2,axis=0)) 

但它会导致

   a   b 
2   NaN  NaN 
3   NaN  NaN 
4   NaN  NaN 
...   ...  ... 
89   NaN  NaN 

我如果我也简单地尝试print(dataCol1-dataCol2)获得相同的结果。我真的不明白这两种减法操作如何不仅导致所有NaN,而且导致两列而不是仅导致最终结果。因为当我print(dataCol1),例如,我得到的我想使用的列:

 a  
2  data  
3  data 
4  data  
... ... 
89 data  

有没有办法在一个Excel电子表格都工作简单而直接,并与的被截短部分执行基本操作所述电子表格的列?也许有更好的办法去做这件事比使用df.ix,我也绝对开放这些方法。

回答

0

问题是您的指数错配。

做一件事会减去值,所以你不必处理对齐问题:

dataCol1 = df.iloc[2: , 0:1] # ix is deprecated 
dataCol2 = df.iloc[2: , 1:2] 

result = pd.DataFrame(dataCol1.values - dataCol2.values) 
+0

谢谢!为什么'ix'不推荐使用? – Oak

+0

@Oak'ix'对你的数据做了一些假设,并且更加不稳定。他们决定将其功能分为'loc'和'iloc'。更新你的熊猫并检查出来。 –