【发布时间】:2021-09-29 05:47:15
【问题描述】:
我有一个数据透视表,其中行按日期排序,然后列按字母顺序。
我希望看到不同的列顺序。例如,如果位置在第一行显示一个值,那么我希望它是第一列。
我基本上使用 sort_values 尝试了以下代码的每个版本:
df1 = pd.pivot_table(df1, values = 'num', index='date', columns = 'location_name',aggfunc = "sum")
result = df1.sort_values(('date'), ascending=False)
// +-----------+---+---+---+---+
// | date | a | b | c | d |
// +-----------+---+---+---+---+
// | 7/31/2021 | | | 1 | |
// | 8/1/2021 | | | 1 | |
// | 8/2/2021 | | | 1 | |
// | 8/3/2021 | | | | 2 |
// | 8/4/2021 | | | | 2 |
// | 8/5/2021 | | | | 2 |
// | 8/6/2021 | | | | 2 |
// | 8/7/2021 | | | | 2 |
// | 8/8/2021 | 3 | | | |
// | 8/9/2021 | 3 | | | |
// | 8/10/2021 | 3 | | | |
// +-----------+---+---+---+---+
所以上面列的顺序应该是 c,d,a,b 的顺序,日期顺序保持不变。
关于最佳方法的任何想法?
【问题讨论】:
-
results= results[['date', 'c','d','a','b']] -
我认为问题不只是重新排序列,而是关于如何确定
list('cdab') -
这些答案引发了一些想法。认为我会在数据透视之前对 df 进行排序,并根据该顺序创建一个列列表,然后在数据透视之后重新排序该列表中的表格。
标签: python pandas sorting pivot-table