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

У меня есть пара файлов в формате csv, например 100-age.csv 100-rel.csv 100-gender.csv 101-age.csv ... 101-gender.csv ... 482-rel.csv 482-gender.csv и т. Д. Я должен создать новый файл для каждого индекса, т. Е. 100-combo.csv, который объединит 100-age.csv 100-rel.csv и 100-gender.csv по горизонтали . Я мог бы сделать это для одного файла, используя панд

import pandas as pd

age = pd.read_csv('100-age.csv', header=None)
gender = pd.read_csv('100-gender.csv', header=None)
rel = pd.read_csv('100-rel.csv', header=None)

combined = pd.concat([age, gender, rel], axis=1)

combined.to_csv('100-combo.csv', header=None, index=None)

В linux существуют методы, такие как cat, которые добавляют только по вертикали, то есть укладывают друг на друга, и команда paste, которая мешает форматированию, которое у меня есть в этих файлах.

    def merged_data(i):   

        age = pd.read_csv(path+str(i)+'.pdf-age.csv', header=None, error_bad_lines=False)
        gender = pd.read_csv(path+str(i)+'.pdf-gender.csv', header=None, error_bad_lines=False)
        rel = pd.read_csv(path+str(i)+'.pdf-rel.csv', header=None, error_bad_lines=False)
        combined = pd.concat([age, gender, rel], axis=1)
        combined['block'] = str(i)
        combined.to_csv(path+str(i)+'-combo.csv', header=None, index=None)

for num in range(1,483):

    merged_data(num)

Я получаю эту ошибку

EmptyDataError: No columns to parse from file

Но я знаю, что все мои файлы данных имеют те или иные значения

1 Ответ

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

Я сделал это и получил то, что хотел. Я использовал

import pandas as pd
import numpy as np
from pandas.io.common import EmptyDataError

    def merged_data(i):   
        try:
            age = pd.read_csv(path+str(i)+'.pdf-age.csv', header=None, error_bad_lines=False, delim_whitespace=True)
        except EmptyDataError:
            age = pd.DataFrame()
        try:  
            gender = pd.read_csv(path+str(i)+'.pdf-gender.csv', header=None, error_bad_lines=False, delim_whitespace=True)
        except EmptyDataError:
            gender = pd.DataFrame()
        try:
            rel = pd.read_csv(path+str(i)+'.pdf-rel.csv', header=None, error_bad_lines=False, delim_whitespace=True)
        except EmptyDataError:
            rel = pd.DataFrame()
            combined = pd.concat([age, gender, rel], axis=1)
            combined['block'] = str(i)
            combined.to_csv(path+str(i)+'-combo.csv', header=None, index=None)

for num in range(1,483):

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