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



熊猫有没有办法将我的列日期(格式为'1997-01-31'(转换为"199701",而不包含有关日期的任何信息?

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

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

但我得到这个错误:"值错误:时间数据'1997-01-31'与格式"%Y%m"不匹配

可能是因为我没有在格式中包含日期。有没有更好的方法在熊猫中从 YYYY-MM_DD 格式传递到 YYYYMM?

一种方法是将日期转换为日期时间,然后使用 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

如果数据足够干净(没有像'foo''001231'这样的不正确字符串(,可能不需要进行datetime转换:

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]

最新更新