python-3.x - 如何将虚拟变量列转换为多列?

标签 python-3.x pandas dataframe

我知道如何将行拆分为列,但如何处理以下 dataframe

<表类="s-表"> <头> <日>日期 虚拟 <日>平均 标签 <正文> 1-19 1 20 l1 1-19 0 40 l1 1-27 1 100 l2 1-27 0 140 l2

预期的数据帧:

<表类="s-表"> <头> <日>日期 avg_t avg_c 标签 <正文> 1-19 20 40 l1 1-27 100 140 l2

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

如果你想要 tc:

(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/

相关文章:

python - 从数据框列中获取数据作为元组列表

python - 将 pandas 数据透视表导出到 csv

python Pandas : merging 2 dataframes

python - Pandas - 堆叠多列

python - 如何根据条件拆分列

python - 为什么 boolean 变量没有被分配为true?

python - 获取对 python 模块中列表的引用并对其进行迭代

r - 来自数据框中的行值的平均值,不包括 R 中的最小值和最大值

python - 合并两个 Pandas 数据框

django - 通过 Django 配置和使用 structlog