在 Pandas 数据帧上迭代时使用其他行值更新行值

Update row values using other row values while iterating over a Pandas dataframe

我有一个包含多个列的数据框 A,它是两个数据框合并的结果。合并后,我需要根据其他列中的值更新 A 中答案列中的值。

伪代码:

    for all agreements in A :
       if the length of the value in the year column in A is less than four:
          update string in answer column of A without the value from year column
       else: 
          update string in answer column of A with the value from year column

我在尝试什么:

for row in A.itertuples() :
  if len(str(A.Year)) < 4 : 
    row.answer = 'Status on ' + row.Name + ' is ' + row.Status 

  else :
    row.answer = 'Status on ' + row.Name + ' ' + str(row.Year) + ' is ' + row.Status 

我收到错误 AttributeError:无法设置属性

有什么建议吗?

由于没有示例数据,我不知道为什么代码会给你错误。但是你可以尝试使用 apply()

def generate_answer(row):
  if len(str(row.Year)) < 4 :
    return ('Status on ' + row.Name + ' is ' + row.Status)
  else :
    return ('Status on ' + row.Name + ' ' + str(row.Year) + ' is ' + row.Status)

A['answer'] = A.apply(generate_answer, axis=1)