在熊猫的dataframe中,我想将日期时间列转换成行。
像这样(大约有12列日期):
Category Type 11/2021 12/2021
0 A 1 0.0 20
1 A 2 NaN 13
2 B 1 5.0 7
3 B 2 20.0 4像这样的人:
Date Category Type1 Type2
0 2021-11 A 0 NaN
1 2021-11 B 5 20.0
2 2021-12 A 20 13.0
3 2021-12 B 7 4.0我想要使用枢轴表,但我做不到。
发布于 2022-04-25 18:26:32
你可以这样做:
(df.melt(['Category', 'Type'], var_name = 'Date').
pivot(['Date', 'Category'],'Type').reset_index())
Date Category value
Type 1 2
0 11/2021 A 0.0 NaN
1 11/2021 B 5.0 20.0
2 12/2021 A 20.0 13.0
3 12/2021 B 7.0 4.0要想变得更干净,你可以使用janitor
import janitor
(df.pivot_longer(['Category', 'Type'], names_to = 'Date', values_to = 'type').
pivot_wider(['Date', 'Category'], names_from = 'Type', names_sep = ''))
Date Category type1 type2
0 11/2021 A 0.0 NaN
1 11/2021 B 5.0 20.0
2 12/2021 A 20.0 13.0
3 12/2021 B 7.0 4.0发布于 2022-04-25 20:10:15
另一种解决办法是:
x = (
df.set_index(["Category", "Type"])
.stack()
.unstack("Type")
.add_prefix("Type")
.reset_index()
)
x = x.rename(columns={"level_1": "Date"})
x.columns.name = None
print(x)指纹:
Category Date Type1 Type2
0 A 11/2021 0.0 NaN
1 A 12/2021 20.0 13.0
2 B 11/2021 5.0 20.0
3 B 12/2021 7.0 4.0https://stackoverflow.com/questions/72003898
复制相似问题