我有订单日期列像2009-01-28
我想提取01/09
作为日期,因为。我画个线形图。所以日期顺序很重要
我申请
data['M/Y'] = pd.to_datetime(data['Order Date']).apply(lambda d: d.strftime('%m/%y'))
但是它返回对象数据类型
这一步怎么做?
使用toolist
将numpy或pandas值转换为本地python值。然后可以使用.replace('-','/')
方法将'-'转换为'/',然后使用字符串切片获得年份的最后数字,如year = '2021'[2:]
# 21。
我只是回答,因为我不能评论。
对于pandas系列,任何字符串对象都被视为object
。您可以按原始日期字符串排序,并在其旁边创建另一列,作为提取的%m/%Y
字符串,使用如下所示:
import pandas as pd
from datetime import datetime
# Sample dataframe
data = pd.DataFrame(data={"original_date": ["2021-01-30", "2018-05-05"]})
# Your code should do this, replace "original_date" with your column name
data["M/Y"] = data["original_date"].apply(
lambda x: (
(
f"{datetime.strptime(x,'%Y-%m-%d').month}/"
+ f"{datetime.strptime(x,'%Y-%m-%d').year}"[-2:]
)
)
)
data.sort_values(by="original_date", ascending=False, inplace=True)
p。S:如果你用datetime
作为original_date
的列类型,那么用lambda x : f"{x.month}/"+f"{x.year}"[-2:]
就更容易了
或者,如果您想使用一年中月份的顺序来绘制,我建议使用Y/M
对字符串进行快速排序。