猿问

python中的“重组”数据框

我正在将以前在 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_Freq2

A01          1        7        1          7          Nan         Nan          Nan         Nan

B02          0        6        Nan        Nan        0           6            Nan         Nan

C03          17       8        Nan        Nan        Nan         Nan          17          8       

我已经尝试了一些旋转的东西,但我想这不能在 Python 中一步完成......


SMILET
浏览 102回答 1
1回答

阿波罗的战车

使用DataFrame.set_indexwithDataFrame.unstack和DataFrame.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  
随时随地看视频慕课网APP

相关分类

Python
我要回答