Как объединить столбцы CSV с Python - PullRequest
0 голосов
/ 23 сентября 2019

Я получил CSV-файл со следующей структурой:

column1 column2 column3 column4 (день) column5 (месяц и год) column6 (время)

column1 column2 column3 column3 column4 (day) column5(месяц и год) column6 (время)

column1 column2 column3 column4 (день) column5 (месяц и год) column6 (время)

...

Столбцы файла неесть имена.Теперь я хочу объединить column4 и column5 и сгенерировать новую версию файла CSV, чтобы у меня была полная дата в одной ячейке.

Я попытался выполнить следующий код Python:


def correctDatetime():
    with open("inputfile.csv", "r") as source, open("outputfile.csv", "w") as result:
        df = pd.read_csv('C:/ProgrammingProjects/LicMonTest/inputfile.csv', header=0)

        for row in source:
            df['Datetime'] = df[df.columns[3:]].apply(lambda x: ' '.join(x.dropna().astype(str)), axis=1)
        result.write(df)

К сожалению, это только генерирует пустой файл CSV.Как я мог лучше всего подойти к этому вопросу?Любые советы будут полезны.Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019
import pandas as pd
#Setup DF
data = [
(1234,    1,     'x', 'x', 34, 'May 2019'),
(1234,    2,     'x', 'x', 34, 'June 2019'),
(1235,    1,     'y', 'y', 34, 'July 2019')]
df = pd.DataFrame(data)

Следующий код объединит ваши данные в зависимости от положения столбца, а затем удалит ненужные столбцы и сохранит в some_csv.csv:

df['Datetime']=df.apply(lambda x:'%s %s' % (str(x[df.columns[4]]),str(x[df.columns[5]])),axis=1)
df.drop(columns=[df.columns[4],df.columns[5]], inplace=True)
df.to_csv('some_csv.csv')
0 голосов
/ 23 сентября 2019

Добавьте header=None, поскольку в read_csv нет заголовка в CSV-файле, затем извлеките столбцы 3 и 4 на DataFrame.pop и объедините их, последняя записьв файл по DataFrame.to_csv:

def correctDatetime():
    df = pd.read_csv('C:/ProgrammingProjects/LicMonTest/inputfile.csv', header=None)
    df['Datetime'] = df.pop(3) + ' ' + df.pop(4) + ' ' + df.pop(5)
    df.to_csv("outputfile.csv", index=False, header=False)

При необходимости конвертировать в datetime и формат month с годами MMYYYY и столбцом времени HH:MM:SS добавить to_datetime:

def correctDatetime():
    df = pd.read_csv('C:/ProgrammingProjects/LicMonTest/inputfile.csv', header=None)
    s = df.pop(3) + '-' + df.pop(4) + ' ' + df.pop(4)
    df['Datetime'] = pd.to_datetime(s, format='%d-%m%Y %H:%M:%S')
    df.to_csv("outputfile.csv", index=False, header=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...