简体   繁体   English

基于同一 dataframe 的另一列更新 pandas dataframe 中的列

[英]Update column in pandas dataframe based on another column of the same dataframe

I am struggling with updating a dataframe columns.我正在努力更新 dataframe 列。 Here is a sample of my dataframe:这是我的 dataframe 的示例:

data1={'UserId': [1, 2, 3], 'OldAnswer': [4, 4, None]}

df1 = pd.DataFrame.from_dict(data1)

data2={'UserId': [1, 2, 3], 'NewAnswer' : [4, 5, None]}

df2 = pd.DataFrame.from_dict(data2)

merged = pd.merge(df1, df2, on ='UserId', how='outer')

Which gives me:这给了我:

UserId用户身份 OldAnswer老答案 NewAnswer新答案
1 1 4 4 4 4
2 2 4 4 5 5
3 3 NaN NaN

Now I Want to update the "OldAnswer" with the "NewAnswer" on rows but when I check the difference between the two columns, it says that on the third row, OldAnswer and NewAnswer are differents.现在我想用行上的“NewAnswer”更新“OldAnswer”,但是当我检查两列之间的差异时,它说在第三行,OldAnswer 和 NewAnswer 是不同的。 The following code gives me the following result:以下代码给了我以下结果:

merged['OldAnswer'] != merged['NewAnswer']

 > False
 > True    
 > True

I thought I would have been able to update my column by doing this:我以为我可以通过这样做来更新我的专栏:

i = 0
while i < len(merged):
    if merged['OldAnswer'].iloc[i] != merged['NewAnswer'].iloc[i]:
        merged['OldAnswer'].iloc[i] = merged['NewAnswer'].iloc[i]
        i += 1
    else:
        i += 1

But it doesn't work either.但它也不起作用。

I feel a bit dumb right now: The simple following code solved it:我现在感觉有点笨:下面的简单代码解决了它:

merged['OldAnswer'] = merged['NewAnswer']
merged.drop(columns='NewAnswer')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM