在熊猫中将日期字符串YYYY-MM-DD转换为YYYYMM

问题描述 投票:1回答:2

在pandas中有没有办法将我的列日期转换为具有以下格式'1997-01-31'到'199701',而不包含有关当天的任何信息?

我尝试了以下形式的解决方案:

df['DATE'] = df['DATE'].apply(lambda x: datetime.strptime(x, '%Y%m'))

但是我得到了这个错误:'ValueError:time data'1997-01-31'与格式'%Y%m'不匹配'

可能原因是我没有把这一天包括在格式中。在熊猫中有没有更好的方法从YYYY-MM_DD格式传递到YYYYMM?

python pandas date
2个回答
1
投票

如果数据足够干净(没有像datetime'foo'这样的错误字符串),可能不需要通过'001231'转换:

df = pd.DataFrame({'date':['1997-01-31', '1997-03-31', '1997-12-18']})

df['date'] = [''.join(x.split('-')[0:2]) for x in df.date]
#     date
#0  199701
#1  199703
#2  199712

或者,如果你有null值:

df['date'] = df.date.str.replace('-', '').str[0:6]

5
投票

一种方法是将日期转换为日期时间,然后使用strftime。请注意,您确实丢失了日期的日期时间功能

df = pd.DataFrame({'date':['1997-01-31' ]})
df['date'] = pd.to_datetime(df['date'])
df['date'] = df['date'].dt.strftime('%Y%m')


    date
0   199701
© www.soinside.com 2019 - 2024. All rights reserved.