我有一个数据集,我希望其中的一些值成为列标题,以及交叉表格式.

数据

year    qtr     ID  type    growth  re     nondd_re   se_re or
2024    2024Q1  NY  aa      3.18    1.14    0         0     0
2024    2024Q2  NY  aa      2.1     1.14    0         0     0
2024    2024Q1  NY  dd      6.26    3.07    3.07      0     0
2024    2024Q2  NY  dd      4.13    3.07    3.07      0     0
2024    2024Q1  CA  aa      0       0       0         0     0
2024    2024Q2  CA  aa      0.03    0       0         0     0
2024    2024Q1  CA  dd      0       0       0         0     0
2024    2024Q2  CA  dd      0.06    0       0         0     0

所需

ID  type       type 2024Q1  2024Q2
NY  growth     dd   6.26    4.13
NY  nond_ re   dd   3.07    3.07
NY  se_re      dd   0       0
NY  or         dd   0       0
NY  re         dd   3.07    3.07
NY  growth     aa   3.18    2.1
NY  nond_ re   aa   0       0
NY  se_re      aa   0       0
NY  or         aa   0       0
NY  re         aa   1.14    1.14
CA  growth     dd   0       0.6
CA  nond_ re   dd   0       0
CA  se_re      dd   0       0
CA  or         dd   0       0
CA  re         dd   0       0
CA  growth     aa   0       0.3
CA  nond_ re   aa   0       0
CA  se_re      aa   0       0
CA  or         aa   0       0
CA  re         aa   0       0 

# Melt the 数据frame to transform metrics columns into rows


    melted_df = df.melt(id_vars=["year", "qtr", "ID", "type"], var_name="type", value_name="value")

# Pivot the melted 数据frame

    pivot_df = melted_df.pivot_table(index=["ID","type"], columns="qtr", values="value", fill_value=0)
    
# Reset index to turn multi-index into columns

    pivot_df = pivot_df.reset_index()

问题是,所有的价值观都没有得到.上面的代码生成了带有缺失值的输出 任何建议都很感激

推荐答案

您可以try 设置为set_index()+stack()/unstack():

out = (
    df.set_index(["year", "qtr", "ID", "type"])
    .stack()
    .unstack("qtr")
    .reset_index()
    .rename(columns={"level_3": "type2"})
    .rename_axis(columns=None, index=None)
)

print(out)

打印:

    year  ID type     type2  2024Q1  2024Q2
0   2024  CA   aa    growth    0.00    0.03
1   2024  CA   aa        re    0.00    0.00
2   2024  CA   aa  nondd_re    0.00    0.00
3   2024  CA   aa     se_re    0.00    0.00
4   2024  CA   aa        or    0.00    0.00
5   2024  CA   dd    growth    0.00    0.06
6   2024  CA   dd        re    0.00    0.00
7   2024  CA   dd  nondd_re    0.00    0.00
8   2024  CA   dd     se_re    0.00    0.00
9   2024  CA   dd        or    0.00    0.00
10  2024  NY   aa    growth    3.18    2.10
11  2024  NY   aa        re    1.14    1.14
12  2024  NY   aa  nondd_re    0.00    0.00
13  2024  NY   aa     se_re    0.00    0.00
14  2024  NY   aa        or    0.00    0.00
15  2024  NY   dd    growth    6.26    4.13
16  2024  NY   dd        re    3.07    3.07
17  2024  NY   dd  nondd_re    3.07    3.07
18  2024  NY   dd     se_re    0.00    0.00
19  2024  NY   dd        or    0.00    0.00

Python相关问答推荐

带有计数值的Pandas数据帧

使用pandas MultiIndex进行不连续 Select

从包含基本数据描述的文本字段中识别和检索特定字符序列

Python中两个矩阵的自定义Hadamard风格产物

两极:如何分割一个大 pyramid 并并行保存每个

如何获取Django REST框架中序列化器内部的外卡属性?

使用imap-tools时错误,其邮箱地址包含域名中的非默认字符

Image Font生成带有条形码Code 128的条形码时出现枕头错误OSErsor:无法打开资源

如何使用stride_tricks.as_strided逆转NumPy数组

滚动和,句号来自Pandas列

对于一个给定的数字,找出一个整数的最小和最大可能的和

如何获取TFIDF Transformer中的值?

PMMLPipeline._ fit()需要2到3个位置参数,但给出了4个位置参数

如何在python xsModel库中定义一个可选[December]字段,以产生受约束的SON模式

如何在Python数据框架中加速序列的符号化

如何在图中标记平均点?

调用decorator返回原始函数的输出

lityter不让我输入左边的方括号,'

Flask Jinja2如果语句总是计算为false&

(Python/Pandas)基于列中非缺失值的子集DataFrame