为了账号安全,请及时绑定邮箱和手机立即绑定

python中的“重组”数据框

python中的“重组”数据框

SMILET 2023-04-25 17:53:29
我正在将以前在 SPSS 建模器中完成的一些数据清理工作翻译成 Python。在 SPSS 中,您有一个称为重组的“节点”。我试图弄清楚如何在 Python 中执行相同的操作,但我正在努力实现这一点。它所做的是将 X 列中的每个值与 A、B、C 等不同列中的所有值组合起来...。因此,原始数据框如下所示:Code         Freq1    Freq2   A01          1        7               B02          0        6               C03          17       8              转换后应该是这样的:Code         Freq1    Freq2    A01_Freq1  A01_Freq2  B02_Freq1   B02_Freq2    C03_Freq1   C03_Freq2A01          1        7        1          7          Nan         Nan          Nan         NanB02          0        6        Nan        Nan        0           6            Nan         NanC03          17       8        Nan        Nan        Nan         Nan          17          8       我已经尝试了一些旋转的东西,但我想这不能在 Python 中一步完成......
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

使用DataFrame.set_indexwithDataFrame.unstackDataFrame.sort_indexfor new DataFramewith MultiIndex,然后用 s 压平它f-string,最后通过 将其添加到原始的DataFrame.join

df1 = df.set_index('Code', append=True).unstack().sort_index(axis=1, level=1)

df1.columns = df1.columns.map(lambda x: f'{x[1]}_{x[0]}')


df = df.join(df1)

print (df)

  Code  Freq1  Freq2  A01_Freq1  A01_Freq2  B02_Freq1  B02_Freq2  C03_Freq1  \

0  A01      1      7        1.0        7.0        NaN        NaN        NaN   

1  B02      0      6        NaN        NaN        0.0        6.0        NaN   

2  C03     17      8        NaN        NaN        NaN        NaN       17.0   


   C03_Freq2  

0        NaN  

1        NaN  

2        8.0  


查看完整回答
反对 回复 2023-04-25
  • 1 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信