두 개의 CSV 파일을 병합하려고하는데 복제본을 제거하고 싶지 않습니다. 첫 번째 열 "PDB ID"를 확인한 다음 두 번째 열 "체인 ID"를 확인하기 만하면됩니다. 모든 값에는 입력 파일이 있습니다. 나는 병합 및 열 파일 하나를 추가하고 내가 스크립트 이상하지만, 그 결과 하나 개의 행을 세 시간에 같은 값을 받고 사용 2.두 개의 CSV 파일을 파이썬에서 병합합니다.
import pandas as pd
a = pd.read_csv("testfile.csv")
b = pd.read_csv("testfile_1.csv")
b = b.dropna(axis=1)
merged = a.merge(b, on='PDB ID')
merged.to_csv("output.csv", index=False)
파일 싶다.
File 1: Input
PDB ID Chain ID Ligand ID Uniprot Acc
3RSQ A NAI Q9X024
3RTD A NAI Q9X024
1E3E A NAI Q9QYY9
1E3E B NAI Q9QYY9
1E3I A NAI Q9QYY9
1E3I B NAI Q9QYY9
File 2: Input
PDB ID Chain ID Avg
1E3E A 31.566
1E3E B 17.867
3RSQ A 57.653
1E3I A 27.63
1E3I B 17.867
3RTD A 48.806
Getting Output:
PDB ID Chain ID_x Avg Ligand ID Uniprot Acc
3RSQ A 57.653 NAI Q9X024
3RTD A 48.806 NAI Q9X024
1E3E A 31.566 NAI Q9QYY9
1E3E A 31.566 NAI Q9QYY9
1E3E B 17.867 NAI Q9QYY9
1E3E B 17.867 NAI Q9QYY9
1E3I A 27.63 NAI Q9QYY9
1E3I A 27.63 NAI Q9QYY9
1E3I B 17.867 NAI Q9QYY9
1E3I B 17.867 NAI Q9QYY9
Expected Output:
3RSQ A 57.653 NAI Q9X024
3RTD A 48.806 NAI Q9X024
1E3E A 31.566 NAI Q9QYY9
1E3E B 17.867 NAI Q9QYY9
1E3I A 27.63 NAI Q9QYY9
1E3I B 17.867 NAI Q9QYY9
감사합니다, 실제로 파일 1 열 :
행의 수는 동일하지 않아도 그 결과는 당신이 무엇을 기대해야한다 (내 마지막 행은 행의 다른 수의 예입니다) "PDB ID"와 File2 열 "PBD ID"는 동일한 순서가 아닙니다. 위의 입력 파일을 편집했습니다. 나는 위의 코드를 시도했지만 두 파일 열 "PDB ID"가 같은 순서가 아니기 때문에 출력과 동일한 입력 파일을 얻습니다. – krish
정렬되지 않은 "PDB ID"시퀀스에서 작동해야하는 내 대답을 편집했습니다. 두 DataFrames의 행 수가 같다고 가정합니다. – PyNoob
감사합니다. 오류 : 길이 불일치 : 예상 축에 3049 개의 요소가 있고 새로운 값에 3060 개의 요소가 있습니다. – krish