python - 在具有混合值的数据框中区分 0 和 False 的简单方法

标签 python pandas dataframe

我的数据框中有一列,其中的值采用 1、0、False,但带有 FalseO 的行是功能不同。

因此,我想将 False0 值转换为其他值

执行此操作的好方法是什么?

使用替换效果不佳

df["col_name"] = df["col_name"].replace(0,2) 也转换 False

df["col_name"] = df["col_name"].replace(False,2) 也转换 0

最佳答案

您可以使用 mask bool 掩码替换值 - 这个解决方案的优点是没有原始类型被改变:

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

解决方案 Series.replace通过 dict,但首先通过 astype 转换为 str也可以工作,但通常它会将所有值转换为 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

我尝试使用 map 创建更通用的解决方案并通过 isinstance 检查 bools:

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

关于python - 在具有混合值的数据框中区分 0 和 False 的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45229159/

相关文章:

python - 在 Ubuntu 10.4 上安装 Python-2.7

Python socket.error : [Errno 111] Connection refused

python 已弃用 pd.convert_objects(convert_numeric=True) 有效,替代方案出现故障

python - sklearn-线性回归 : could not convert string to float: '--'

python - 从另一个数据框填充数据框的列

使用 C API PyRun_String 时出现 Python 系统错误

python - 动态创建python属性函数

python - .astype ("int") 或 .astype(int)?有和没有引号/双引号之间有什么区别吗?

r - 过滤时间范围内的所有天数

r - 如何更改数据框中的列值?