gpt4 book ai didi

python - 使用 pandas/python 合并/合并两个 csv

转载 作者:行者123 更新时间:2023-11-28 17:20:56 34 4
gpt4 key购买 nike

我有两个 csvs,我想将这些 csvs 组合或合并为左连接...我的关键列是“id”,我在两个 csvs 中都有与“结果”相同的非关键列,但如果第二个 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,

输出.csv:

id,result
1,"{s1,added}"
3,"{s3,added}"

预期输出

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}"

当前代码:

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)

问题:

使用这段代码,我得到了两次结果列。我只想要一次,如果该列中存在值,它应该覆盖。如何获得单个结果列?

最佳答案

试试这个,这个也行

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']

关于python - 使用 pandas/python 合并/合并两个 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41669299/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com