在 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)
我有一个包含多个列的数据框 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)