python - 通过 Pandas 中的单个字典映射多个列

标签 python pandas mapping

我有一个包含多个列的 DataFrame,其中包含"is"和“否”字符串。我希望所有这些都转换为 bool 数据类型。要映射一列,我会使用

dict_map_yn_bool={'yes':True, 'no':False}
df['nearby_subway_station'].map(dict_map_yn_bool)

这将完成一列的工作。如何用一行代码替换多列?

最佳答案

您可以使用 applymap :

df = pd.DataFrame({'nearby_subway_station':['yes','no'], 'Station':['no','yes']})
print (df)
  Station nearby_subway_station
0      no                   yes
1     yes                    no

dict_map_yn_bool={'yes':True, 'no':False}

df = df.applymap(dict_map_yn_bool.get)
print (df)
  Station nearby_subway_station
0   False                  True
1    True                 False

另一种解决方案:

for x in df:
    df[x] = df[x].map(dict_map_yn_bool)
print (df)
  Station nearby_subway_station
0   False                  True
1    True                 False

谢谢 Jon Clements非常好的主意 - 使用 replace :

df = df.replace({'yes': True, 'no': False})
print (df)
  Station nearby_subway_station
0   False                  True
1    True                 False

dict 中没有数据时的一些区别:

df = pd.DataFrame({'nearby_subway_station':['yes','no','a'], 'Station':['no','yes','no']})
print (df)
  Station nearby_subway_station
0      no                   yes
1     yes                    no
2      no                     a

applymapbooleanstrings,为数字 NaN 创建 None

df = df.applymap(dict_map_yn_bool.get)
print (df)
  Station nearby_subway_station
0   False                  True
1    True                 False
2   False                  None

map 创建NaN:

for x in df:
    df[x] = df[x].map(dict_map_yn_bool)

print (df)
  Station nearby_subway_station
0   False                  True
1    True                 False
2   False                   NaN

replace 不创建 NaNNone,但原始数据未受影响:

df = df.replace(dict_map_yn_bool)
print (df)
  Station nearby_subway_station
0   False                  True
1    True                 False
2   False                     a

关于python - 通过 Pandas 中的单个字典映射多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43725799/

相关文章:

python - 有没有办法让 psycopg2 将点作为 python 元组返回?

python - 使用条件打印数据框中的特定行

Spring Web Flow 请求映射

c# - 如何在 MVC3 和 Entity Framework 上使用 Code First 向我的数据库添加另一个表?

python - Pandas :将 int 系列转换为新的 StringDtype

python - 将 utc 时间字符串转换为 unix 时间戳

python - 用 "NAN"填充缺失的间隙

python - 根据日期拆分数据框

python - 使用 __getattr__ 和 __setattr__ 功能实现类字典对象

Python Anaconda 重新安装