1

我试图在 Pandas DataFrame 中从另一行中减去一行。我在一个数字列之前有多个描述符列,迫使我在两个描述符列上设置 DataFrame 的索引。

当我这样做时,无论列的 set_index() 列表中列出的第一个列名是什么,我都会得到一个 KeyError。在这种情况下,它是“COL_A”:

df = pd.DataFrame({'COL_A': ['A', 'A'], 
                   'COL_B': ['B', 'B'], 
                   'COL_C': [4, 2]})
df.set_index(['COL_A', 'COL_B'], inplace=True)
df.iloc[1] = (df.iloc[1] / df.iloc[0])
df.reset_index(inplace=True)


KeyError: 'COL_A'

我没有再考虑这一点,也无法弄清楚为什么 KeyError 是如何解决的。

4

2 回答 2

0

我遇到这个问题是为了快速回答。这就是我的解决方案。

>>> df = pd.DataFrame(data=[[5,5,5,5], [3,3,3,3]], index=['r1', 'r2'])
>>> df
    0  1  2  3
r1  5  5  5  5
r2  3  3  3  3
>>> df.loc['r3'] = df.loc['r1'] - df.loc['r2']
>>> df
    0  1  2  3
r1  5  5  5  5
r2  3  3  3  3
r3  2  2  2  2
>>> 
于 2020-07-28T14:54:32.677 回答
0

不确定我是否理解正确:

df = pd.DataFrame({'COL_A': ['A', 'A'],
                   'COL_B': ['B', 'B'],
                   'COL_C': [4, 2]})

给出:

  COL_A COL_B  COL_C
0     A     B      4
1     A     B      2

然后

df.set_index(['COL_A', 'COL_B'], inplace=True)
df.iloc[1] = (df.iloc[1] / df.iloc[0])

产量:

COL_A COL_B       
A     B        4.0
      B        0.5

如果您现在想从第 1 行减去第 0 行,您可以:

df.iloc[1].subtract(df.iloc[0])

要得到:

COL_C   -3.5
于 2016-06-21T02:45:13.183 回答