首页 > 解决方案 > Python:有没有更简单的方法在 pandas DataFrame 上应用 map()?

问题描述

我创建了一个布尔目录并应用到来自同一个 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)

标签: pythonpandasboolean

解决方案


我想到了两种方法:

堆栈/取消堆栈:

star_wars.stack().map(seen_boolean).unstack()

通过默认的 pandas 迭代器(但不是真正的优雅/Pandas 风格)循环遍历你的列:

for col in star_wars:
  star_wars[col] = star_wars[col].map(seen_boolean)

推荐阅读