【问题标题】:Python Pandas Pivot() with Dates as Column Names Need to Sort and Format以日期为列名的 Python Pandas Pivot() 需要排序和格式化
【发布时间】:2023-04-05 11:19:01
【问题描述】:

我在这里看到了其他 cmets,了解当 pivot() 将日期设为列名时如何正确地对列进行排序。我没有看到的是如何在排序后将这些日期转换为我想要的格式。

这是我的例子。我的数据如下所示:

category date value1 value2
a 12/1/2018 1 25
a 1/1/2019 2 26
a 2/1/2019 3 27
b 12/1/2018 4 28
b 1/1/2019 5 29
b 2/1/2019 6 30
c 12/1/2018 7 31
c 1/1/2019 8 32
c 2/1/2019 9 33

我想要的是这样的:

category value Dec-18 Jan-19 Feb-19
a value1 1 2 3
a value2 25 26 27
b value1 4 5 6
b value2 28 29 30
c value1 7 8 9
c value2 31 32 33

我已经想出了如何让枢轴一次执行一个值,并且只要我不尝试格式化日期,就可以对日期进行排序。但是 pivot 正在将这些日期转换为文本,所以我不能再更改格式了。

这是我目前所拥有的:

#df['date'] = pd.to_datetime(df.date).dt.strftime('%b-%y')
final = df.pivot(index='category', columns='date', values='value1')

如果我先进行日期格式化,则排序不正确。我也尝试过 pivot_table,但它不允许我设置 aggfunc=None

日期格式必须是动态的,也就是每个月的日期范围都会不同(过去 12 个月),所以我不想硬编码日期。

谢谢!

【问题讨论】:

    标签:
    python
    pandas
    date
    pivot