gpt4 book ai didi

Python 根据 if 条件更新列

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

我有一个包含两个数据框的列表。我正在尝试根据“Married”的值为 NULL 更新“Dependents”列。

for dataset in data_cleaner:
dataset[dataset.Dependents.isnull()].loc[dataset.Dependents.isnull() and dataset['Married']=='Yes' ] ='1'
dataset[dataset.Dependents.isnull()].loc[dataset.Dependents.isnull() and dataset['Married']=='No' ] ='0'

错误:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

也尝试了 if else 条件并得到了同样的错误。我在这里遗漏或不理解什么?

最佳答案

错误意味着在链式 bool 条件下使用 and,在 pandas 比较数组中,因此需要按位 AND - &。另一个问题是缺少 () 来比较 Married 列的条件。

并且由于使用 DataFrame 列表,因此有必要使用索引更新每个 DataFrame - data_cleaner[i]

注意:如果需要使用数字,请附加 10 而不是 '1''0'.

for i in range(len(data_cleaner)):
m1 = data_cleaner[i].Dependents.isnull()
data_cleaner[i].loc[m1 & (data_cleaner[i]['Married']=='Yes'), 'Dependents'] ='1'
data_cleaner[i].loc[m1 & (data_cleaner[i]['Married']=='No'), 'Dependents'] ='0'

替代 numpy.select :

for i in range(len(data_cleaner)):
m1 = data_cleaner[i].Dependents.isnull()
m2 = (data_cleaner[i]['Married']=='Yes')
m3 = (data_cleaner[i]['Married']=='No')

data_cleaner[i]['Dependents'] = np.select([m1 & m2, m1 & m3],
['1','0'],
data_cleaner[i]['Dependents'])

或者创建另一个 DataFrame 列表:

out = []
for dataset in data_cleaner:
m1 = dataset.Dependents.isnull()
dataset.loc[m1 & (dataset['Married']=='Yes'), 'Dependents'] ='1'
dataset.loc[m1 & (dataset['Married']=='No'), 'Dependents'] ='0'
out.append(dataset)

关于Python 根据 if 条件更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57620202/

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