[英]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 ![]() |
4 ![]() |
4 ![]() |
2 ![]() |
4 ![]() |
5 ![]() |
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.