1

Pandas DataFrame で 1 つの行を別の行から減算しようとしています。1 つの数値列の前に複数の記述子列があるため、2 つの記述子列に 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({'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 に答える
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 に答える