Abe*_*Abe 5 python dataframe pandas
我的数据框中有一列,其中的值1, 0, False除了具有False或O在功能上不同的行之外.
因此,我想将False或0值转换为其他内容
这样做的好方法是什么?
使用替换效果不佳
df["col_name"] = df["col_name"].replace(0,2)转换False值也是如此
和
df["col_name"] = df["col_name"].replace(False,2)转换0值也是如此
您可以使用maska替换值boolean mask- 此解决方案的优点是没有原始types更改:
df = pd.DataFrame({'Col':[1, False, 0]})
df['Col'] = df['Col'].mask(df['Col'].astype(str) == '0', 2).replace(False, 3)
print (df)
Col
0 1
1 3
2 2
Run Code Online (Sandbox Code Playgroud)
与解决方案Series.replace通过dict,但首先转换为str通过astype作品太多,但一般这一切值转换为str真实的数据还有什么能问题.
d = {'0':'Zero', 'False':False}
df = df['Col'].astype(str).replace(d)
print (df)
0 1
1 False
2 Zero
Name: Col, dtype: object
Run Code Online (Sandbox Code Playgroud)
我尝试创建一个更通用的解决方案map和检查bools通过isinstance:
df = pd.DataFrame({'Col':[1, False, 0, True,5]})
print (df)
Col
0 1
1 False
2 0
3 True
4 5
m = df['Col'].apply(lambda x: isinstance(x, bool))
df['Col'] = df['Col'].mask(m, df['Col'].map({False:2, True:3}))
print (df)
Col
0 1
1 2
2 0
3 3
4 5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
235 次 |
| 最近记录: |