如何用 pandas 减去两个部分列?
How to subtract two partial columns with pandas?
我刚刚开始使用 Pandas,所以我可能遗漏了一些重要的东西,但我似乎无法成功地减去我正在使用的两列。我在 excel 中有一个电子表格,我按如下方式导入:
df = pd.read_excel('/path/to/file.xlsx',sheetname='Sheet1')
我的 table 在执行 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
我不关心 "stuff;" 我想减去两列数据并将其作为自己的列。因此,很明显我应该 trim 关闭我不感兴趣的行并处理剩下的行,所以我尝试了以下操作:
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
更好的方法来解决这个问题,我也绝对愿意接受这些方法。
问题是您的索引未对齐。
要做的一件事是减去值,这样您就不必处理对齐问题:
dataCol1 = df.iloc[2: , 0:1] # ix is deprecated
dataCol2 = df.iloc[2: , 1:2]
result = pd.DataFrame(dataCol1.values - dataCol2.values)
我刚刚开始使用 Pandas,所以我可能遗漏了一些重要的东西,但我似乎无法成功地减去我正在使用的两列。我在 excel 中有一个电子表格,我按如下方式导入:
df = pd.read_excel('/path/to/file.xlsx',sheetname='Sheet1')
我的 table 在执行 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
我不关心 "stuff;" 我想减去两列数据并将其作为自己的列。因此,很明显我应该 trim 关闭我不感兴趣的行并处理剩下的行,所以我尝试了以下操作:
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
更好的方法来解决这个问题,我也绝对愿意接受这些方法。
问题是您的索引未对齐。
要做的一件事是减去值,这样您就不必处理对齐问题:
dataCol1 = df.iloc[2: , 0:1] # ix is deprecated
dataCol2 = df.iloc[2: , 1:2]
result = pd.DataFrame(dataCol1.values - dataCol2.values)