基于密钥和次密钥合并两个csv文件

2024-09-28 20:45:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想合并两个csv文件,如下所示:

csv1:

formula,solver,runtime,conflicts
CBS_k3_n100_m403_b30_13.cnf,SWDiA5BY,0.001842,318
CBS_k3_n100_m403_b30_13.cnf,glucose,0.001842,318

csv2:

^{pr2}$

期望输出:

formula,solver,runtime,conflicts,entropy,solutions
CBS_k3_n100_m403_b30_13.cnf,SWDiA5BY,0.001842,318,0.202,707286
CBS_k3_n100_m403_b30_13.cnf,glucose,0.001842,318,0.202,707286

所以我在两个字典(csv)的键之间做了一个交集,并使用了列表理解

keysA = set(dict1.keys())
keysB = set(dict2.keys())
keys = keysA & keysB
...
[[key] + dict1.get(key, []) + dict2.get(key, []) for key in keys]

但是有一些“重复”行(我需要),其中field公式是相同的,但是field解算器不同,我的输出是:

formula,solver,runtime,conflicts,entropy,solutions
CBS_k3_n100_m403_b30_13.cnf,SWDiA5BY,0.001842,318,0.202,707286

如何使用列表理解保持这些行?或者以任何其他方式

感谢你的帮助

编辑-添加了一个示例


Tags: csvkeykeysruntimecnfcbssolverformula
1条回答
网友
1楼 · 发布于 2024-09-28 20:45:45

你为什么不用熊猫呢。在熊猫身上很容易做到这一点

import pandas as pd
df1=pd.read_csv("1.csv")
df=pd.read_csv("2.csv")
result=df1.merge(df,on="formula")
result.to_csv("result.csv")

您还可以使用result=df1.merge(df,on="formula",how="outer")来保留csv中一个有而另一个没有的公式

相关问题 更多 >