Как объединить 2 кадра данных с неравной длиной с помощью ключей - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь объединить два фрейма данных, используя ключи из одного фрейма данных.Входные файлы - это файлы .csv, и я хотел бы, чтобы мой выходной файл также был файлом .csv.

Мои два входных файла выглядят так:

DF1:

Org1   Org2  
OTU_1  OTU_2
OTU_1  OTU 3
OTU_1  OTU_4
OTU_2  OTU_4

DF2:

Org1  Interaction  Ratio
OTU_1  TRUE   0.5
OTU_2  FALSE  0.1

Я хочу, чтобы мой выходной файл выглядел так:

Org1  Org2  Interaction  Ratio
OTU_1  OTU_2  TRUE  0.5
OTU_1  OTU_3  TRUE  0.5
OTU_1  OTU_4  TRUE  0.5
OTU_2  OTU_4  FALSE 0.1

Я сделал следующее:

import sys
import pandas as pd
import io
from io import StringIO

DF1=pd.read_csv(io.StringIO(sys.argv[1].decode()),sep="[;,]",engine="python")
DF2=pd.read_csv(io.StringIO(sys.argv[2].decode()),sep="[;,]",engine="python")


merged=pd.merge(DF1,DF2,how="left",on="Org1")

df.to_csv(merged,sep='\t')

Я получаю следующую ошибку:

KeyError: 'Org1'

Буду очень признателен за информацию о том, что нужно исправить, чтобы получить желаемый выходной файл.

1 Ответ

0 голосов
/ 08 февраля 2019

Спасибо всем за помощь, я смог решить проблему, руководствуясь вашими комментариями.

Настоящей ошибкой было то, что мне нужно было указать dtype = str в команде pd.read_csv ().Без этого python не мог прочитать мои ключи, потому что он не мог правильно читать мои входные файлы.У меня также были ошибки, связанные с тем, как я пытался написать свой CSV-файл, поэтому в целом код просто не работал на нескольких уровнях.

Публикация следующего кода, который работает как задумано.

** 1006
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...