gpt4 book ai didi

python - 根据另一个系列中的值替换系列中的值的快捷方式?

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

在下面的代码中,如果 a 列中的相应值为 1,我将用空白字符串替换 b 列中的所有 NaN 值.

代码可以工作,但我必须输入 df.loc[df.a == 1, 'b'] 两次。

有更短/更好的方法吗?

    import pandas as pd

df = pd.DataFrame({
'a': [1, None, 3],
'b': [None, 5, 6],
})

filtered = df.loc[df.a == 1, 'b']
filtered.fillna('', inplace=True)
df.loc[df.a == 1, 'b'] = filtered
print(df)

最佳答案

如何使用 numpy where 子句来检查 a 和 b 中的值并替换?请参阅下面的模型。我使用列“c”来说明

import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, None, 3],
'b': [None, 5, 6],
})
#replace b value if the corresponding value in column a is 1 and column b is NaN
df['c'] = np.where(((df['a'] == 1) & (df['b'].isna())), df['a'], df['b'])
df

原始数据框

     a  b
0 1.0 1.0
1 NaN 5.0
2 3.0 6.0

结果:

      a b   c
0 1.0 NaN 1.0
1 NaN 5.0 5.0
2 3.0 6.0 6.0

关于python - 根据另一个系列中的值替换系列中的值的快捷方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56356058/

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