выбрать конкретные столбцы из нескольких файлов CSV в пандах Python - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь создать модифицированный CSV-файл из нескольких небольших CSV-файлов.В field1.csv и field2.csv есть один общий столбец.Окончательный CSV-файл final.csv будет содержать column["NAME"], column["ACC"] от field1.csv и column1["SCORE"], column["TEAM"] от field2.csv, где column["ID"] от field1.csv равно euqal до column["ID"] от field2.csv,Если значения нет, то оно должно быть пустым.Я использую Python панды.

field1.csv: -

"ID","NAME","ACC","POINT"
"123","TRR","OOP","64"
"124","DEE","OOP","78"
"125","EWR","PLO","98"

field2.csv: -

"ID","SCORE","TEAM","END"
"111","92","BCC","0"
"121","80","CSS","1"
"123","87","BCC","0"

final.csv: -

"NAME","ACC","SCORE","TEAM"
"TRR","OOP","87","BCC"
"DEE","OOP","",""
"EWR","PLO","",""

Python-кодчто я пытаюсь,

import pandas as pd

df1 = pd.read_csv("field1.csv", index_col=[1], index_col=[2])

df2 = pd.read_csv("field2.csv", index_col=[1], index_col=[2])

finaldf = pd.concat([df1, df2])

print(finaldf)

finaldf.to_csv('final.csv')

1 Ответ

0 голосов
/ 06 июня 2018

Я думаю, нужен один параметр index_col для преобразования первого столбца в index с фильтрами столбцов на usecols с join по умолчанию левое соединение:

df1 = pd.read_csv("field1.csv", index_col=[0], usecols=["ID","NAME","ACC"])

df2 = pd.read_csv("field2.csv", index_col=[0], usecols=["ID","SCORE","TEAM"])

finaldf = df1.join(df2)
print (finaldf)
    NAME  ACC  SCORE TEAM
ID                       
123  TRR  OOP   87.0  BCC
124  DEE  OOP    NaN  NaN
125  EWR  PLO    NaN  NaN

Другим возможным решением является фильтрация столбцов перед join по подмножествам:

df1 = pd.read_csv("field1.csv", index_col=[0])

df2 = pd.read_csv("field2.csv", index_col=[0])

finaldf = df1[["NAME","ACC"]].join(df2[["SCORE","TEAM"]]) 

Последняя запись в файл с пропуском index:

finaldf.to_csv('final.csv', index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...