gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:57:10 26 4
gpt4 key购买 nike

我有一个包含多个列的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com