![](/img/trans.png)
[英]Pandas Crosstab: Change Order of Columns That Are Named as Formatted Dates (mmm yy)
[英]Pandas: change the order of the columns when using crosstab
很简单,我想更改 Panda 的crosstab
列的顺序。
现在,它是按字母顺序排列的,即:周五、周一、周六、周日、周四、周二、周三。 我希望它按顺序进行,即:星期一,星期二,...,星期日。
这是一个数据集,我想为一周中的几天和发生的时间制作一个crosstab
。
我现在正在这样做:
pd.crosstab(data_2019.HOUR, data_2019.DAY_OF_WEEK)
输出如下所示:
DAY_OF_WEEK Friday Monday Saturday Sunday Thursday Tuesday Wednesday
HOUR
0 204 255 256 260 225 222 192
1 121 111 198 230 116 117 145
2 128 90 217 222 84 111 96
您可以按照所需的顺序创建一个包含星期几的列表。 然后您可以使用.crosstab
并使用更改运行.crosstab
的输出顺序
生成crosstab
days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday',
'Friday', 'Saturday', 'Sunday']
c = pd.crosstab(...)
一种选择
更改crosstab
表生成的列的顺序
c = c[days]
或者
使用.reindex
和axis='columns'
并指定列表( days
)用于更改DataFrame
的索引(列)
c = c.reindex(days, axis="columns")
通常需要更改列和行的顺序,为此我们需要结合@edesz 提供的答案中概述的方法。
例如:
In [1]: import pandas as pd
In [2]: df = pd.DataFrame({"a": ["one", "two", "three", "three"], "b": ["two", "one", "three", "one"]})
In [3]: pd.crosstab(df["a"], df["b"]) # wrong order
Out[3]:
b one three two
a
one 0 0 1
three 1 1 0
two 1 0 0
In [4]: pd.crosstab(df["a"], df["b"]).reindex(["one", "two", "three"])[["one", "two", "three"]] # correct order
Out[4]:
b one two three
a
one 0 1 0
two 1 0 0
three 1 0 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.