Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改日期格式以删除前导零的更好方法?_Python_Datetime_Pandas_Dataframe_Leading Zero - Fatal编程技术网

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