如何解决如果 Python 中的条件使大多数列无
我有一个带有一个布尔列的熊猫数据框。如果布尔值为 False,我想将大多数列设置为“无”。我不想更改我正在迭代的对象,但是这样做的优雅方法是什么?
解决方法
import numpy as np
df['result'] = np.where(df['boolean col'] == False,np.nan,'Not Null')
,
您可以使用 apply
函数遍历行:
import pandas as pd
import random
df = pd.DataFrame(
{"a": list(range(10)),"b": list(range(10)),"c": [random.choice((True,False)) for _ in range(10)]
})
def mask(row):
if row["c"]:
row["a"] = None
return row
df.apply(mask,axis=1)
产生以下结果:
a b c
0 0 0.0 False
1 1 1.0 False
2 2 NaN True
3 3 3.0 False
4 4 NaN True
5 5 NaN True
6 6 NaN True
7 7 NaN True
8 8 NaN True
9 9 NaN True
同时原始数据框不变。
这当然不是最快的方法,但它非常灵活。如果速度是一个重要因素,您也可以考虑使用 where
方法。
cols_to_replace = ["a","b"]
new_col_names = ["new_" + col for col in cols_to_replace]
df[new_col_names] = df[cols_to_replace].where(df["c"])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。