gpt4 book ai didi

python - pandas 中更惯用的 "if-else"替换

转载 作者:行者123 更新时间:2023-12-02 01:54:51 24 4
gpt4 key购买 nike

我的问题看似简单,基于条件,例如数据帧中的值小于 2,将值更改为 1,反之则更改为 0。类似于“if-else”。

玩具示例,输入:

   a   b
0 1 -5
1 2 0
2 3 10

输出:

   a  b
0 1 1
1 0 1
2 0 0

这是我的解决方案:

import pandas as pd
import numpy as np


df = pd.DataFrame({'a': [1,2,3], 'b': [-5, 0, 10]})

arr = np.where(df < 2, 1, 0)
df_fin = pd.DataFrame(data=arr, index=df.index, columns=df.columns)

我不喜欢直接依赖numpy,而且它对我来说看起来也有点冗长。可以用更简洁、更惯用的方式来完成吗?

最佳答案

一般解决方案:

Pandas 是用 numpy 构建的,所以我认为只需要导入。以下是 df[:]

中可能的设置值
import numpy as np

df[:] = np.where(df < 2, 1, 0)
print (df)
a b
0 1 1
1 0 1
2 0 0

如果只使用 pandas 函数,有点过于复杂:

m = df < 2
df = df.mask(m, 1).where(m, 0)

替换为0,1解决方案:

通过 DataFrame.view 将映射 True 的掩码转换为 1 并将 False 转换为 0或者像另一个答案一样:

df = (df < 2).view('i1')

关于python - pandas 中更惯用的 "if-else"替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69748756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com