Не удается преобразовать объект в дату после группового - PullRequest
0 голосов
/ 02 февраля 2019

Пару дней назад я успешно конвертировал, работая с другим набором данных.Однако я не могу применить ту же технику к моему текущему набору данных.Набор выглядит следующим образом:

totalHist.columns.values[[0, 1]] = ['Datez', 'Volumez']
totalHist.head()

Datez   Volumez
0   2016-09-19  6.300000e+07
1   2016-09-20  3.382694e+07
2   2016-09-26  4.000000e+05
3   2016-09-27  4.900000e+09
4   2016-09-28  5.324995e+08


totalHist.dtypes

Datez       object
Volumez    float64
dtype: object

Раньше это делало трюк:

totalHist['Datez'] = pd.to_datetime(totalHist['Datez'], format='%d-%m-%Y')
totalHist.dtypes

, который сейчас дает мне:

KeyError: 'Datez'
During handling of the above exception, another exception occurred:

Как я могу это исправить?Я делаю эту группу перед попыткой:

totalHist = df.groupby('Date', as_index = False).agg({"Trading_Value": "sum"})
totalHist.head()

totalHist.columns.values[[0, 1]] = ['Datez', 'Volumez']
totalHist.head()

1 Ответ

0 голосов
/ 02 февраля 2019

Вы можете просто использовать .rename() для переименования ваших столбцов

Создать некоторые данные (в том же формате, что и OP)

d = ['1/1/2018','1/2/2018','1/3/2018',
     '1/3/2018','1/4/2018','1/2/2018','1/1/2018','1/5/2018']
df = pd.DataFrame(d, columns=['Date'])
df['Trading_Value'] = [1000,1005,1001,1001,1002,1009,1010,1002]
print(df)

       Date  Trading_Value
0  1/1/2018           1000
1  1/2/2018           1005
2  1/3/2018           1001
3  1/3/2018           1001
4  1/4/2018           1002
5  1/2/2018           1009
6  1/1/2018           1010
7  1/5/2018           1002

GROUP BY

totalHist = df.groupby('Date', as_index = False).agg({"Trading_Value": "sum"})
print(totalHist.head())

       Date  Trading_Value
0  1/1/2018           2010
1  1/2/2018           2014
2  1/3/2018           2002
3  1/4/2018           1002
4  1/5/2018           1002

Переименуйте столбцы

totalHist.rename(columns={'Date':'Datez','totalHist':'Volumez'}, inplace=True)
print(totalHist)

      Datez  Trading_Value
0  1/1/2018           2010
1  1/2/2018           2014
2  1/3/2018           2002
3  1/4/2018           1002
4  1/5/2018           1002

Наконец, конвертируйте в datetime

totalHist['Datez'] = pd.to_datetime(totalHist['Datez'])
print(totalHist.dtypes)

Datez            datetime64[ns]
Trading_Value             int64
dtype: object

Это было сделано с python --version = 3.6.7 и pandas (0.23.4).

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