【问题标题】:Pandas Pivot table column columns by date valuePandas Pivot 表列按日期值
【发布时间】: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']]
  • 这能回答你的问题吗? How to change the order of DataFrame columns?
  • 我认为问题不只是重新排序列,而是关于如何确定list('cdab')
  • 这些答案引发了一些想法。认为我会在数据透视之前对 df 进行排序,并根据该顺序创建一个列列表,然后在数据透视之后重新排序该列表中的表格。

标签: python pandas sorting pivot-table


【解决方案1】:

试试:

cols = df.iloc[:, 1:].apply(pd.Series.first_valid_index).sort_values().index
df = df[['date', *cols.tolist()]]
>>> df
         date    c    d    a   b
0   7/31/2021  1.0  NaN  NaN NaN
1    8/1/2021  1.0  NaN  NaN NaN
2    8/2/2021  1.0  NaN  NaN NaN
3    8/3/2021  NaN  2.0  NaN NaN
4    8/4/2021  NaN  2.0  NaN NaN
5    8/5/2021  NaN  2.0  NaN NaN
6    8/6/2021  NaN  2.0  NaN NaN
7    8/7/2021  NaN  2.0  NaN NaN
8    8/8/2021  NaN  NaN  3.0 NaN
9    8/9/2021  NaN  NaN  3.0 NaN
10  8/10/2021  NaN  NaN  3.0 NaN

【讨论】:

  • 这对我有用,但首先我需要以我希望的方式设置 df:df1 = pd.pivot_table(df1, values = 'num', index='date', columns = 'location_name',aggfunc = "sum") 然后重置索引以使其再次成为 df:df1= df1.reset_index() 最后运行上面的两行并在上面给了我你的输出。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-31
  • 2017-03-14
  • 2016-08-21
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
相关资源
最近更新 更多