use*_*481 4 python mapping pandas
我有一个DataFrame,其中包含带有'yes'和'no'字符串的多列.我希望他们所有人都转换为boolian dtype.要映射一列,我会使用
dict_map_yn_bool={'yes':True, 'no':False}
df['nearby_subway_station'].map(dict_map_yn_bool)
Run Code Online (Sandbox Code Playgroud)
这将完成一列的工作.如何用单行代码替换多列?
piR*_*red 10
你可以使用stack/unstack成语
df.stack().map(dict_map_yn_bool).unstack()
Run Code Online (Sandbox Code Playgroud)
使用@jezrael 的设置
df = pd.DataFrame({'nearby_subway_station':['yes','no'], 'Station':['no','yes']})
dict_map_yn_bool={'yes':True, 'no':False}
Run Code Online (Sandbox Code Playgroud)
然后
df.stack().map(dict_map_yn_bool).unstack()
Station nearby_subway_station
0 False True
1 True False
Run Code Online (Sandbox Code Playgroud)
定时
小数据
更大的数据
你可以使用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
Run Code Online (Sandbox Code Playgroud)
另一种方案:
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
Run Code Online (Sandbox Code Playgroud)
感谢Jon Clements非常好的想法 - 使用replace:
df = df.replace({'yes': True, 'no': False})
print (df)
Station nearby_subway_station
0 False True
1 True False
Run Code Online (Sandbox Code Playgroud)
如果数据不存在,则存在一些差异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
Run Code Online (Sandbox Code Playgroud)
applymap创造None了boolean,strings为数字NaN.
df = df.applymap(dict_map_yn_bool.get)
print (df)
Station nearby_subway_station
0 False True
1 True False
2 False None
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
replace不要创建NaN或None,但原始数据不受影响:
df = df.replace(dict_map_yn_bool)
print (df)
Station nearby_subway_station
0 False True
1 True False
2 False a
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3003 次 |
| 最近记录: |