2016-06-11 1 views
1

:가에 따라 두 CSV 파일을 병합 키 및 보조 키 I는 다음과 같이 두 개의 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 

원하는 출력 :

,210
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] 

을했지만 약간의 '중복'행 (I가 필요로하는) ​​경우 현장 있다 공식은 동일하지만 필드 해결사이 아닌입니다 내 출력은 다음과 같습니다

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

가 어떻게 지능형리스트를 사용하는 행을 유지할 수 있습니다? 또는 다른 방법

에 도움

편집을 주셔서 감사합니다 - 예를 들어 당신이 판다를 사용하지 않는 이유는

+0

귀하의 질문이 명확하지 않습니다. 이러한 "중복 행"은 모두 ** solver **가있는 유일한 파일 인 csv1에 있습니까? 어떻게하면 중복 행을 처리 할 수 ​​있을까요? 각 키에 대해 하나의 값만 가질 수 있지만 그 값은 목록 일 수 있습니다. 각 ** 수식 **에 대한 값 목록을 원하십니까? 데이터의 예와 해당 데이터에서 원하는 결과를 보여 주어야합니다. –

답변

2

을 추가했다. 그것의 아주 쉽게 또한 당신이 당신의 CSV 중 하나가 가지고있는 그 공식을 유지하기 위해 result=df1.merge(df,on="formula",how="outer")를 사용할 수 팬더

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

에서이 작업을 수행 할 수 있지만, 다른 하나는하지

+0

외부 결합은 모든 행을 유지하기 때문에'result = df1.merge (df, on = "formula", how = "left")'를 의미한다고 생각합니다! 감사합니다! –

+1

''left ''는'df'가 배타적으로'result'에서 잃어 버릴 행을 의미하는 왼쪽 외부 조인을 의미합니다. 여기에 나는 전체 외부 조인에 대해 이야기하고 있습니다. – Eular

관련 문제