我刚刚开始使用Pandas,所以我可能会遗漏一些重要的东西,但我似乎无法成功地减去我正在使用的两个专栏。我在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 :(得分:0)
问题在于指数的错误分配。
要做的一件事就是减去这些值,这样你就不必处理对齐问题了:
dataCol1 = df.iloc[2: , 0:1] # ix is deprecated
dataCol2 = df.iloc[2: , 1:2]
result = pd.DataFrame(dataCol1.values - dataCol2.values)