Python基于if条件更新列

2024-05-13 20:42:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含两个数据帧的列表。我试图根据“Married”的值更新列“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'

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

也尝试了if-else条件,得到了相同的错误。我在这里遗漏了什么或不明白什么?你知道吗


Tags: and数据noin列表fordata错误
2条回答

您需要指定列名。你知道吗

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

错误意味着在比较数组中使用带链布尔条件的and,因此需要按位AND-&。另一个问题是在compare byMarried列的条件周围缺少()。你知道吗

由于使用数据帧列表,因此有必要使用索引更新每个数据帧-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'

替换为^{}

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'])

或创建另一个数据帧列表:

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)

相关问题 更多 >