mun*_*uni 6 python data-manipulation
我有一个大约有100列的数据框,有一些布尔列和一些字符.我想替换所有具有值True/False的布尔值以及-1和1/0的布尔值.我想将它应用于整个数据帧而不是单列.
我在这里看到了一些解决方案,比如将列转换为整数.但是我想避免通过100列的练习.
这是我尝试失败的事情:
test.applymap(lambda x: 1 if x=='True' else x)
test.applymap(lambda x: 0 if x=='False' else x)
Run Code Online (Sandbox Code Playgroud)
但是数据帧测试仍然是True/False
Dee*_*ace 10
applymap 默认情况下不是就地,它将返回一个新的数据帧.
正确的方法:
test = test.applymap(lambda x: 1 if x == True else x)
test = test.applymap(lambda x: 0 if x == False else x)
Run Code Online (Sandbox Code Playgroud)
要么
test = test.applymap(lambda x: 1 if x == True else x).test.applymap(lambda x: 0 if x=='False' else x)
Run Code Online (Sandbox Code Playgroud)
或者干脆
test.applymap(lambda x: 1 if x == True else x, inplace=True)
test.applymap(lambda x: 0 if x == False else x, inplace=True)
Run Code Online (Sandbox Code Playgroud)
虽然replace似乎是实现这一目标的最佳方式:
test.replace(False, 0, inplace=True)
Run Code Online (Sandbox Code Playgroud)
对于单个列,目前最简单的方法是转换列类型。Pandas 足够聪明,可以正确地将 boolean 映射到 int。
df.column_name = df.column_name.astype(int)
Run Code Online (Sandbox Code Playgroud)
如果 df.column_name 以 开头Boolean,则转换为 type 后会变为 0 和 1int
| 归档时间: |
|
| 查看次数: |
10853 次 |
| 最近记录: |