【发布时间】:2016-06-11 13:42:17
【问题描述】:
我想合并两个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:
formula,entropy,num sols
CBS_k3_n100_m403_b30_13.cnf,0.202,707286
想要的输出:
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]
但是有一些“重复”行(我需要),其中字段 formula 是相同的,但字段 solver 不是,我的输出是:
formula,solver,runtime,conflicts,entropy,solutions
CBS_k3_n100_m403_b30_13.cnf,SWDiA5BY,0.001842,318,0.202,707286
如何使用列表理解来保留这些行?或以任何其他方式
感谢您的帮助
编辑 - 添加示例
【问题讨论】:
-
你的问题不清楚。这些“重复行”是否都在 csv1 中,这是唯一存在 solver 的文件?您希望如何处理重复行?每个键最多可以有一个值,但该值可以是一个列表。您想要每个 公式 的值列表吗?您应该向我们展示一个数据示例以及该数据的预期结果。