1
私はmap
の値をシリーズの一定の値にしようとしていますが、他のものはそのままです。この場合、dmso --> dmso-2
,naoh --> naoh-2
、water --> water-2
を変更しましたが、KeyError
が表示されています。パンダシリーズに.map付きネストされた辞書を使用するにはどうすればいいですか? pd.Series([])map
まず、ブール値の文を実行して、True
の場合はFalse
の場合はx
を返します。私は手動で行って変更することができましたが、プログラミングは面白くて、なぜこのロジックが機能しないのかわかりません。
# A sample of the series
Se_data = pd.Series({
'DMSO_S43': 'dmso',
'DMSO_S44': 'dmso',
'DOXYCYCLINE-HYCLATE_S25': 'doxycycline-hyclate',
'DOXYCYCLINE-HYCLATE_S26': 'doxycycline-hyclate'
})
# This boolean works
Se_data.map(lambda x: x in {"dmso", "naoh", "water"})
# DMSO_S43 True
# DMSO_S44 True
# DOXYCYCLINE-HYCLATE_S25 False
# DOXYCYCLINE-HYCLATE_S26 False
# This dictionary on the boolean works
Se_data.map(lambda x: {True: "control", False: x}[x in {"dmso", "naoh", "water"}])
# DMSO_S43 control
# DMSO_S44 control
# DOXYCYCLINE-HYCLATE_S25 doxycycline-hyclate
# DOXYCYCLINE-HYCLATE_S26 doxycycline-hyclate
# This nested dictionary isn't working
Se_data.map(lambda x: {
True: {"dmso": "dmso-2", "naoh": "naoh-2", "water": "water-2"}[x],
False: x
}[x in {"dmso", "naoh", "water"}])
# KeyError: 'doxycycline-hyclate'
うわーようなものを行っている可能性があり、これはちょうど私の不満の多くを保存しました。ありがとうございました。私の解決策は少しエレガントな笑だった。 (x): 返信d [x] else: 返信x''' –