当我尝试在没有循环的情况下使用df.at函数时,它可以很好地更改永久列的数据,但在循环中使用它时会出现错误。代码在这里。
import pandas as pd
data1 = {'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj'],
'Height': [5.1, 6.2, 5.1, 5.2]}
df1 = pd.DataFrame(data1)
data2 = {'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj'],
'Height': [4.1, 3.4, 7.1, 9.2]}
df2 = pd.DataFrame(data2)
df3 = pd.concat([df1, df2], axis=1)
for i in range(int(len(df1))):
for j in range(int(len(df2))):
if df1['Name'][i] != df2['Name'][j]:
continue
else:
out = (df1['Height'][i] - df2['Height'][j])
df3.at[i, 'Height_Comparison'] = out
break
print(df3)发布于 2020-01-30 12:51:58
发生此问题的原因是数据框df3中的列名(‘Name’、'Height')重复,这是由于合并操作造成的。Concat在造成此问题的Data Frame df3中使用相同的列名('Name','Height')创建双条目。一旦我将列名改为Name1,df1中的Height1和df2中的Name2,Heigh2,问题就解决了。
https://stackoverflow.com/questions/59963998
复制相似问题