我知道如何将行拆分为列,但如何处理以下 dataframe
?
预期的数据帧
:
当dummy
等于1 时,avg
为20,并重命名为avg_t
作为列。类似于 avg_c
列。
我试过:
df.groupby(['dummy','avg']).size().unstack
但是,它不起作用。
最佳答案
您还可以使用 janitor
中的 pivot_wider
:.
# pip install pyjanitor
import pandas as pd
import janitor
df.pivot_wider(index = ['date', 'lable'], names_from = 'dummy')
Out[19]:
date lable avg_0 avg_1
0 1-19 l1 40 20
1 1-27 l2 140 100
如果你想要 t
和 c
:
(df.assign(dummy = df['dummy'].map({0:'c', 1:'t'})).
pivot_wider(index = ['date', 'lable'], names_from = 'dummy'))
Out[20]:
date lable avg_c avg_t
0 1-19 l1 40 20
1 1-27 l2 140 100
关于python-3.x - 如何将虚拟变量列转换为多列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71964296/