Как объединить два столбца в одном столбце в качестве даты с пандами? - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть csv с первым столбцом даты и 5-м часами. Я хотел бы объединить их в один столбец с определенным форматом для записи другого файла CSV.

Это в основном файл:

DATE,DAY.WEEK,DUMMY.WEEKENDS.HOLIDAYS,DUMMY.MONDAY,HOUR 
01/01/2015,5,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,2,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,3,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,4,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,5,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,6,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,7,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,8,1,0,0,0,0,0,0,0,0,0,0,0

Я попытался прочитать кадр данныхкак

dataR = pd.read_csv(fnamecsv) 

и преобразовать первую строку в дату, как:

date_dt3 = datetime.strptime(dataR["DATE"].iloc[0], '%d/%m/%Y')

Однако мне кажется, что это неверный путь по двум причинам:

1) он добавляет час без учета часового столбца;

2) он, кажется, не использует функцию панд.

Спасибо за любую помощь,

Diedro

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

С помощью оператора +

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

import pandas as pd 

df = pd.DataFrame({'Last': ['something', 'you', 'want'], 
                   'First': ['merge', 'with', 'this']}) 

print('Before Join') 
print(df, '\n') 

print('After join') 
df['Name']= df["First"].astype(str) +" "+ df["Last"] 
print(df) ```

0 голосов
/ 08 ноября 2019

Вы можете использовать read_csv с параметрами parse_dates со списком имен обоих столбцов и date_parser для указания формата:

f = lambda x: pd.to_datetime(x, format='%d/%m/%Y %H')
dataR = pd.read_csv(fnamecsv, parse_dates=[['DATE','HOUR']], date_parser=f)

Или преобразовать часы в timedeltas и добавитьк дате позже:

dataR = pd.read_csv(fnamecsv, parse_dates=[0], dayfirst=True) 
dataR['DATE'] += pd.to_timedelta(dataR.pop('HOUR'), unit='H')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...