#python #pandas
#python #pandas
Вопрос:
Я знаю, что следующие команды могут помочь изменить тип столбца:
df['date'] = str(df['date'])
df['A'] = pd.to_datetime(df['A'])
df['A'] = df.A.astype(np.datetime64)
Но знаете ли вы лучший способ изменить тип столбца встроенным способом, чтобы сделать его в одной строке следующим за другими командами агрегирования, такими как groupby, dropna и т. Д. Например:
df
#.function to cast df.A to np.datetime64
.groupby('C')
.apply(lambda x: x.set_index('A').resample('1M').sum())
Комментарии:
1. Первый пример может не принадлежать ему, поскольку он не изменяет dtype.
2. Также вы можете захотеть проверить pd.Grouper , чтобы избежать временной установки индекса и использования повторной выборки.
3. Потерпите меня с первым примером. Вы правы, в более позднем примере что-то не так с повторной выборкой, потому что он создает новый индекс, и я пытаюсь удалить его inow..
4. Я так поражен тем, что вы находите риск здесь так быстро.. Я изменил метод на pd.Grouper, и теперь он работает отлично.
Ответ №1:
Вы можете использовать assign:
df.assign(A=pd.to_datetime(df['A']))
df = pd.DataFrame({'A': ['20150101', '20140702'], 'B': [1, 2]})
df
Out:
A B
0 20150101 1
1 20140702 2
df.assign(A=pd.to_datetime(df['A']))
Out:
A B
0 2015-01-01 1
1 2014-07-02 2
Комментарии:
1. Это именно то, что я ищу! Спасибо, Айхан!