【问题标题】:Python updating column based on if conditionPython根据if条件更新列
【发布时间】:2019-08-23 13:32:23
【问题描述】:

我有一个包含两个数据框的列表。我正在尝试根据“已婚”的值为 NULL 来更新“家属”列。

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 条件并得到相同的错误。我在这里错过或不理解什么?

【问题讨论】:

  • 请发布错误。

标签: python pandas


【解决方案1】:

错误意味着使用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'])

或者创建另一个 DataFrames 列表:

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)

【讨论】:

    【解决方案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'
    

    【讨论】:

      猜你喜欢
      • 2020-07-30
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2021-11-25
      • 2022-01-23
      相关资源
      最近更新 更多