【发布时间】:2020-04-13 00:31:08
【问题描述】:
我创建了一个布尔目录并应用到来自同一个 DataFrame (star_wars) 的六个不同系列。它有效,但很好奇是否有比仅更改列标题重复相同语法更简单的方法?
seen_boolean = {'Star Wars: Episode I The Phantom Menace': 'Yes', 'NaN': 'No', 'Star Wars: Episode II Attack of the Clones': 'Yes', 'Star Wars: Episode III Revenge of the Sith': 'Yes', 'Star Wars: Episode IV A New Hope': 'Yes', 'Star Wars: Episode V The Empire Strikes Back': 'Yes', 'Star Wars: Episode VI Return of the Jedi': 'Yes'}
star_wars['seen_1'] = star_wars['seen_1'].map(seen_boolean)
star_wars['seen_2'] = star_wars['seen_2'].map(seen_boolean)
star_wars['seen_3'] = star_wars['seen_3'].map(seen_boolean)
star_wars['seen_4'] = star_wars['seen_4'].map(seen_boolean)
star_wars['seen_5'] = star_wars['seen_5'].map(seen_boolean)
star_wars['seen_6'] = star_wars['seen_6'].map(seen_boolean)
【问题讨论】:
-
好像
star_wars.notna().replace({True:'Yes',False:'No'}) -
这不是 notna(),目标是将电影名称替换为“是”,除非它是 NaN,然后替换为“否”。六个系列中的每个系列都有不同的电影名称。
-
@user699217 这就是 anky 的建议,如果不是 NaN 则进行测试,如果为 True,则替换为 yes,如果不为 true(因此为 NaN),则替换为 No。