按存储为字符串的日期列对数据框进行排序
数据挖掘
Python
时间序列
熊猫
数据框
2022-02-18 13:15:16
2个回答
您的month列实际上是部分日期(即缺少年份),但您仍然可以将该列转换为适当的日期格式,然后进行排序。您必须指定一种格式,以便解析器大致知道要做什么。
df["date"] = pd.to_datetime(["20-Apr"], format="%d-%b")
df.sort_values("date") # ascending by default
如果没有任何年份信息,它将添加年份为 1900。
如果您想添加例如今年,您可以执行以下操作,将12*20月份添加到新日期列:
df["fixed_date"] = df.date.apply(lambda x: pd.tseries.offsets.shift_month(x, 12*20))
我建议首先将月份列分成day并month使用str.split('-')
# create test data
df = pd.DataFrame(['20-Apr', '19-Mar', '4-Dec'], columns=['month'])
# create day column
df['day'] = 0
split = df['month'].str.split('-', expand=True)
df['day'], df['month'] = split[0], split[1]
现在那个月份是分开的,您可以将其更改为分类,以便可以自定义排序
df['month'] = pd.Categorical(df['month'], ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'])
现在你可以排序
df.sort_values("month")
希望这可以帮助
其它你可能感兴趣的问题
