gpt4 book ai didi

python - 如何在元组上使用应用属性

转载 作者:太空宇宙 更新时间:2023-11-04 00:28:05 25 4
gpt4 key购买 nike

如果同一行中的 a 列不是 NaN,我尝试将 b 列中的所有 NaN 元素更改为 1。例如:a==1 b==NaN ,将 b 更改为 1。这是我的代码。

raw_data['b'] = ((raw_data['a'],raw_data['b']).apply(condition))

def condition(a,b):
if a != None and b == None:
return 1

我得到了一个 AttributeError:'tuple' 对象没有属性 'apply'。在这种情况下我可以使用哪些其他方法?

最佳答案

首先使用 & 和函数 isnull 通过链式条件创建 bool 掩码和 notnull .

然后是添加 1 的更多可能解决方案 - 使用 mask , locnumpy.where :

mask = raw_data['a'].notnull() & raw_data['b'].isnull()
raw_data['b'] = raw_data['b'].mask(mask, 1)

或者:

raw_data.loc[mask, 'b'] = 1

或者:

raw_data['b'] = np.where(mask, 1,raw_data['b'])

示例:

raw_data = pd.DataFrame({
'a': [1,np.nan, np.nan],
'b': [np.nan, np.nan,2]
})
print (raw_data)
a b
0 1.0 NaN
1 NaN NaN
2 NaN 2.0

mask = raw_data['a'].notnull() & raw_data['b'].isnull()

print (mask)
0 True
1 False
2 False
dtype: bool

raw_data.loc[mask, 'b'] = 1

print (raw_data)
a b
0 1.0 1.0
1 NaN NaN
2 NaN 2.0

编辑:

如果想使用自定义函数(如果数据更多真的很慢)需要apply axis=1 按行处理:

def condition(x):
if pd.notnull(x.a) and pd.isnull(x.b):
return 1
else:
return x.b

raw_data['b'] = raw_data.apply(condition, axis=1)

print (raw_data)
a b
0 1.0 1.0
1 NaN NaN
2 NaN 2.0

关于python - 如何在元组上使用应用属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46753605/

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