は、私がデータフレームを持って不足している列名/キーにマッチ行の値以下のようになります。Q5、Q10、Q41、アイテムはカラム名ですPythonのKeyError例外:パンダ:一部のキーが
Q5 | Q10 | Q41 | item
a | b | c | Q5
d | e | f | Q10
g | h | i | Q571
j | k | l | Q23340
m | n | o | Q41
h | p | s | Q10
DataFrame。列 "item"の値が列名と一致する列の値を持つ列 "name"をもう1つ追加します。だから私は以下のように見えるようにします:
Q5 | Q10 | Q41 | item | name
a | b | c | Q5 | a
d | e | f | Q10 | e
g | h | i | Q571 | NA
j | k | l | Q23340 | NA
m | n | o | Q41 | o
h | p | s | Q10 | p
ここで問題は、列よりも多くの項目があります。したがって、列項目のすべての値がkeyErrorの原因となる列として存在するわけではありません。
df['col_exist'] = [(col in df.columns) for col in df.item]
df['name'] = np.where(df['col_exist']==True, df[df.item], np.nan)
そして、私はエラーを取得する:私は以下のようにやってみました私もdf.apply以下のように使用してみました
KeyError: "['Q571', 'Q23340'] not in index"
:
df['name'] = np.where(df['col_exist']==True, df.apply(lambda x: x[x.item], axis=1), np.nan)
をしかし、私は以下のようにエラーを取得しています:
KeyError: ('Q571', 'occurred at index 2')
私はなぜそれがわかりませんcol_exitチェックを行っても存在しない列にアクセスしようとしています。
誰かがこの問題を解決するのに手伝ってください。