Соединение панда данных с британским форматом даты - PullRequest
0 голосов
/ 08 июня 2018

Я изо всех сил пытаюсь присоединиться к фреймам данных panda из файлов csv, которые содержат британский формат даты dd / mm / yyyy.

Данные, содержащиеся в файле csv:

UK Date     Price
30/12/2015  120
31/12/2015  123
...         ... 
11/01/2016  135
12/01/2016  144

Моя проблема заключается в том, что данные, соответствующие 01.11.2016, добавляются к 1 ноября 2016 года на фрейме данных, и наоборот, данные в строке 01/11/2016 добавляются к 11 января 2016 года.

Здесьмой простой код, который я использую для создания DataFrame в пределах диапазона дат и объединения данных из временного фрейма данных:

# Define the dates
dates = pd.date_range('2015-12-01', '2018-06-07')

# Create an empty DataFrame
df1 = pd.DataFrame(index = dates)

# Read the data into a temp dataframe
dftemp = pd.read_csv("a.csv", index_col='UK Date', parse_dates = True,
                        usecols = ['UK Date', 'Price'])

# Join the two DataFrames
df1 = df1.join(dftemp, how='inner')

print df1

Я не уверен, что лучше всего попытаться преобразовать пустые даты фрейма данных в Великобританиюформат или изменить формат при чтении файла в?Кроме того, каков наилучший способ изменить формат?

Спасибо

1 Ответ

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

Я считаю, что лучше всего конвертировать в datetime с read_csv по параметру dayfirst:

df = pd.read_csv("a.csv",
                 index_col='UK Date', 
                 parse_dates = True, 
                 dayfirst=True,
                 usecols = ['UK Date', 'Price'])

Другие решения с to_datetime:

df['UK Date'] = pd.to_datetime(df['UK Date'], dayfirst=True)
#if need DatetimeIndex 
#df.index = pd.to_datetime(df.index, dayfirst=True)

Или:

df['UK Date'] = pd.to_datetime(df['UK Date'], format='%d/%m/%Y')
#if need DatetimeIndex 
#df.index = pd.to_datetime(df.index, format='%d/%m/%Y')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...