[英]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.