将pandas datetime列yyyy-mm-dd转换为YYYYMMDD [英] convert pandas datetime column yyyy-mm-dd to YYYYMMDD
问题描述
我有一个带有datetime列的dateframe,格式为yyyy-mm-dd.
I have a dateframe with datetime column in the format yyyy-mm-dd.
我想以整数格式yyyymmdd来拥有它.我不断使用此
I would like to have it in interger format yyyymmdd . I keep throwing an error using this
x=dates.apply(dt.datetime.strftime('%Y%m%d')).astype(int)
TypeError: descriptor 'strftime' requires a 'datetime.date' object but received a 'str'
这不起作用,因为我尝试传递数组.我知道,如果我只传递元素,它将转换,但是我该如何使用pythonic呢?我确实尝试过使用lambda,但是那也不起作用.
This doesn't not work as i tried to pass an array. I know that if I pass just on element it will convert, but how do I do it more pythonic? I did try using lambda but that didn't work either.
推荐答案
如果您的列是字符串,则需要先使用`pd.to_datetime',
If your column is a string, you will need to first use `pd.to_datetime',
df['Date'] = pd.to_datetime(df['Date'])
然后,将 .dt
日期时间访问器与 strftime
一起使用:
Then, use .dt
datetime accessor with strftime
:
df = pd.DataFrame({'Date':pd.date_range('2017-01-01', periods = 60, freq='D')})
df.Date.dt.strftime('%Y%m%d').astype(int)
或使用lambda函数:
Or use lambda function:
df.Date.apply(lambda x: x.strftime('%Y%m%d')).astype(int)
输出:
0 20170101
1 20170102
2 20170103
3 20170104
4 20170105
5 20170106
6 20170107
7 20170108
8 20170109
9 20170110
10 20170111
11 20170112
12 20170113
13 20170114
14 20170115
15 20170116
16 20170117
17 20170118
18 20170119
19 20170120
20 20170121
21 20170122
22 20170123
23 20170124
24 20170125
25 20170126
26 20170127
27 20170128
28 20170129
29 20170130
30 20170131
31 20170201
32 20170202
33 20170203
34 20170204
35 20170205
36 20170206
37 20170207
38 20170208
39 20170209
40 20170210
41 20170211
42 20170212
43 20170213
44 20170214
45 20170215
46 20170216
47 20170217
48 20170218
49 20170219
50 20170220
51 20170221
52 20170222
53 20170223
54 20170224
55 20170225
56 20170226
57 20170227
58 20170228
59 20170301
Name: Date, dtype: int32
这篇关于将pandas datetime列yyyy-mm-dd转换为YYYYMMDD的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!