我有两个 csvs,我想合并或合并这些 csvs 作为左连接......我的关键列是“id”,我在两个 csvs 中有与“result”相同的非关键列,但我想覆盖“result”如果第二个 CSV 的“结果”列中存在任何值,则为列。我如何使用 Pandas 或任何脚本语言来实现这一点。请查看我的最终预期输出。
输入.csv:
id,scenario,data1,data2,result
1,s1,300,400,"{s1,not added}"
2,s2,500,101,"{s2 added}"
3,s3,600,202,
Run Code Online (Sandbox Code Playgroud)
输出.csv:
id,result
1,"{s1,added}"
3,"{s3,added}"
Run Code Online (Sandbox Code Playgroud)
final_output.csv
id,scenario,data1,data2,result
1,s1,300,400,"{s1,added}"
2,s2,500,101,"{s2 added}"
3,s3,600,202,"{s3,added}"
Run Code Online (Sandbox Code Playgroud)
import pandas as pd
a = pd.read_csv("input.csv")
b = pd.read_csv("output.csv")
merged = a.merge(b, on='test_id',how='left')
merged.to_csv("final_output.csv", index=False)
Run Code Online (Sandbox Code Playgroud)
使用此代码,我获得了两次结果列。我只想要一次,如果该列中存在值,它应该覆盖。如何获得单个结果列?
小智 2
试试这个,这也有效
import pandas as pd
import numpy as np
c=pd.merge(a,b,on='id',how='left')
lst=[]
for i in c.index:
if(c.iloc[i]['result_x']!=''):
lst.append(c.iloc[i]['result_x'])
else:
lst.append(c.iloc[i]['result_y'])
c['result']=pd.Series(lst)
del c['result_x']
del c['result_y']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9500 次 |
| 最近记录: |