Python 更改日期格式以删除前导零的更好方法?
数据帧看起来像:Python 更改日期格式以删除前导零的更好方法?,python,datetime,pandas,dataframe,leading-zero,Python,Datetime,Pandas,Dataframe,Leading Zero,数据帧看起来像: OPENED 0 2004-07-28 1 2010-03-02 2 2005-10-26 3 2006-06-30 4 2012-09-21 我成功地将它们转换为我想要的格式,但效率似乎很低 OPENED 0 40728 1 100302 2 51026 3 60630 4 120921 我用于日期转换的代码是: df['OPENED'] = pd.to_datetime(df.OPENED, format='%Y-%m-%d
OPENED
0 2004-07-28
1 2010-03-02
2 2005-10-26
3 2006-06-30
4 2012-09-21
我成功地将它们转换为我想要的格式,但效率似乎很低
OPENED
0 40728
1 100302
2 51026
3 60630
4 120921
我用于日期转换的代码是:
df['OPENED'] = pd.to_datetime(df.OPENED, format='%Y-%m-%d')
df['OPENED'] = df['OPENED'].apply(lambda x: x.strftime('%y%m%d'))
df['OPENED'] = df['OPENED'].apply(lambda i: str(i))
df['OPENED'] = df['OPENED'].apply(lambda s: s.lstrip("0"))
您可以使用,然后通过str[2://code>删除前2个字符,最后通过以下方式删除前导的0
:
感谢您的评论:
print (df['OPENED'].apply(lambda L: '{0}{1:%m%d}'.format(L.year % 100, L)))
0 40728
1 100302
2 51026
3 60630
4 120921
Name: OPENED, dtype: object
把它扔出去:df['OPENED'].apply(lambda L:{0}{1:%m%d}.format(L.year%100,L))
谢谢大家,这正是我想要的:)。出于好奇,您用来解决这个问题的python概念是什么?我是新来的,你可能会说我很糟糕,我想learn@anshanno-您需要进一步解释第一个或第二个解决方案吗?数据类型为字符串
或时间戳
?在我的解决方案中,用于文本数据处理的函数有。但是熊猫使用了更多的函数,与文本python函数类似。其工作原理是:首先用空字符串替换所有-
,然后删除前2个字符a='abcdef'
和a[2://code>,请参阅。最后只需从左侧删除0,因此使用lstrip
。
print (type(df.ix[0,'OPENED']))
<class 'pandas.tslib.Timestamp'>
print (df.OPENED.dtype)
datetime64[ns]
print (df.OPENED.dt.strftime('%y%m%d').str.lstrip('0'))
0 40728
1 100302
2 51026
3 60630
4 120921
Name: OPENED, dtype: object
print (df['OPENED'].apply(lambda L: '{0}{1:%m%d}'.format(L.year % 100, L)))
0 40728
1 100302
2 51026
3 60630
4 120921
Name: OPENED, dtype: object