gpt4 book ai didi

python - 更改 pandas 日期格式以删除前导零的更好方法?

转载 作者:太空宇宙 更新时间:2023-11-03 14:59:55 25 4
gpt4 key购买 nike

DataFrame 看起来像:

       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.replace ,然后通过 str[2:] 删除前 2 个字符,最后通过 str.lstrip 删除前导 0 :

print (type(df.ix[0,'OPENED']))
<class 'str'>
print (df.OPENED.dtype)
object

print (df.OPENED.str.replace('-','').str[2:].str.lstrip('0'))
0 40728
1 100302
2 51026
3 60630
4 120921
Name: OPENED, dtype: object

如果 dtype 已经是 datetime 使用 strftimestr.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

谢谢Jon Clements征求意见:

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

关于python - 更改 pandas 日期格式以删除前导零的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39017748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com