重塑后对数据帧进行转换

Transformations on a dataframe after reshaping

提问人:Sai Deepak Chinta 提问时间:10/8/2023 更新时间:10/8/2023 访问量:41

问:

我已将 excel 读入具有以下结构的数据帧中

df = pd.read_excel(exp_path, skiprows = 20, header = [0,1], index_col=0)
print(df)

                      Unnamed: 1_level_0               average              \
                      Unnamed: 1_level_1 Incidence percentage% Sample size   
NaN                        Gender - Male                  70.0     19119.0   
NaN                      Gender - Female                  30.0     19119.0   
NaN  Gender - I don't identify as either                   NaN         NaN   
NaN                                  NaN                   NaN         NaN   
NaN                                  NaN                   NaN         NaN   
..                                   ...                   ...         ...   
NaN                                  NaN                   NaN         NaN   
NaN                                  NaN                   NaN         NaN   
NaN                                  NaN                   NaN         NaN   
NaN                                  NaN                   NaN         NaN   
NaN                                  NaN                   NaN         NaN   

           Carefree youth                      Urban fellow              \
    Incidence percentage% Sample size Incidence percentage% Sample size   
NaN                  56.0      3033.0                 100.0      1095.0   
NaN                  44.0      3033.0                   0.0      1095.0   
NaN                   0.0      3033.0                   0.0      1095.0   
NaN                   NaN         NaN                   NaN         NaN   
NaN                   NaN         NaN                   NaN         NaN   
..                    ...         ...                   ...         ...   
NaN                   NaN         NaN                   NaN         NaN   
NaN                   NaN         NaN                   NaN         NaN   
NaN                   NaN         NaN                   NaN         NaN   
NaN                   NaN         NaN                   NaN         NaN   
NaN                   NaN         NaN                   NaN         NaN   

           Wholesome lady             Progressive professional              \
    Incidence percentage% Sample size    Incidence percentage% Sample size   
NaN                   0.0       999.0                     77.0      1837.0   
NaN                 100.0       999.0                     23.0      1837.0   
NaN                   0.0       999.0                      0.0      1837.0   
NaN                   NaN         NaN                      NaN         NaN   
NaN                   NaN         NaN                      NaN         NaN   
..                    ...         ...                      ...         ...   
NaN                   NaN         NaN                      NaN         NaN   
NaN                   NaN         NaN                      NaN         NaN   
NaN                   NaN         NaN                      NaN         NaN   
NaN                   NaN         NaN                      NaN         NaN   
NaN                   NaN         NaN                      NaN         NaN   

    Unconvetional adventurer                 Pragmetic striver              \
       Incidence percentage% Sample size Incidence percentage% Sample size   
NaN                     75.0       880.0                  81.0      2566.0   
NaN                     25.0       880.0                  19.0      2566.0   
NaN                      0.0       880.0                   0.0      2566.0   
NaN                      NaN         NaN                   NaN         NaN   
NaN                      NaN         NaN                   NaN         NaN   
..                       ...         ...                   ...         ...   
NaN                      NaN         NaN                   NaN         NaN   
NaN                      NaN         NaN                   NaN         NaN   
NaN                      NaN         NaN                   NaN         NaN   
NaN                      NaN         NaN                   NaN         NaN   
NaN                      NaN         NaN                   NaN         NaN   

           Success seeker                   Mature achiever              \
    Incidence percentage% Sample size Incidence percentage% Sample size   
NaN                  84.0      1673.0                  74.0      1146.0   
NaN                  16.0      1673.0                  26.0      1146.0   
NaN                   0.0      1673.0                   0.0      1146.0   
NaN                   NaN         NaN                   NaN         NaN   
NaN                   NaN         NaN                   NaN         NaN   
..                    ...         ...                   ...         ...   
NaN                   NaN         NaN                   NaN         NaN   
NaN                   NaN         NaN                   NaN         NaN   
NaN                   NaN         NaN                   NaN         NaN   
NaN                   NaN         NaN                   NaN         NaN   
NaN                   NaN         NaN                   NaN         NaN   

          Joyful indulger             Easy-going trandionalist  \
    Incidence percentage% Sample size    Incidence percentage%   
NaN                  70.0      2311.0                     69.0   
NaN                  30.0      2311.0                     31.0   
NaN                   0.0      2311.0                      0.0   
NaN                   NaN         NaN                      NaN   
NaN                   NaN         NaN                      NaN   
..                    ...         ...                      ...   
NaN                   NaN         NaN                      NaN   
NaN                   NaN         NaN                      NaN   
NaN                   NaN         NaN                      NaN   
NaN                   NaN         NaN                      NaN   
NaN                   NaN         NaN                      NaN   

                     Sophisticated senior                               
        Sample size Incidence percentage%    Sample size Sample size.1  
NaN            2572                    62            974           NaN  
NaN            2572                    38            974           NaN  
NaN            2572                     0            974           NaN  
NaN             NaN                   NaN            NaN           NaN  
NaN             NaN                   NaN            NaN           NaN  
..              ...                   ...            ...           ...  
NaN             NaN                   NaN            NaN           NaN  
NaN             NaN                   NaN            NaN           NaN  
NaN             NaN                   NaN            NaN           NaN  
NaN             NaN                   NaN            NaN           NaN  
NaN  Index  Legend:           Index > 120  Index  80-120    Index <80 

利用 .stack() 方法,我能够将数据帧转换为:

df3 = df.stack(0).reset_index()
    level_0                   level_1 Incidence percentage%     Sample size  \
0       NaN            Carefree youth                  56.0          3033.0   
1       NaN  Easy-going trandionalist                  69.0            2572   
2       NaN           Joyful indulger                  70.0          2311.0   
3       NaN           Mature achiever                  74.0          1146.0   
4       NaN         Pragmetic striver                  81.0          2566.0   
..      ...                       ...                   ...             ...   
35      NaN        Unnamed: 1_level_0                   NaN             NaN   
36      NaN              Urban fellow                   0.0          1095.0   
37      NaN            Wholesome lady                   0.0           999.0   
38      NaN  Easy-going trandionalist                   NaN  Index  Legend:   
39      NaN      Sophisticated senior           Index > 120   Index  80-120   

   Sample size.1                   Unnamed: 1_level_1  
0            NaN                                  NaN  
1            NaN                                  NaN  
2            NaN                                  NaN  
3            NaN                                  NaN  
4            NaN                                  NaN  
..           ...                                  ...  
35           NaN  Gender - I don't identify as either  
36           NaN                                  NaN  
37           NaN                                  NaN  
38           NaN                                  NaN  

我想填写类似于 df 表的 Unnamed: 1_level_1 列。所以它应该是这样的:

               Column  ...                                  Row
0             Carefree youth  ...                        Gender - Male
1   Easy-going trandionalist  ...                        Gender - Male
2            Joyful indulger  ...                        Gender - Male
3            Mature achiever  ...                        Gender - Male
4          Pragmetic striver  ...                        Gender - Male
5   Progressive professional  ...                        Gender - Male
6       Sophisticated senior  ...                        Gender - Male
7             Success seeker  ...                        Gender - Male
8   Unconvetional adventurer  ...                        Gender - Male
9         Unnamed: 1_level_0  ...                        Gender - Male
10              Urban fellow  ...                      Gender - Female
11            Wholesome lady  ...                      Gender - Female
12                   average  ...                      Gender - Female
13            Carefree youth  ...                      Gender - Female
14  Easy-going trandionalist  ...                      Gender - Female

我尝试了 .fillna(),但由于顺序不同,它被错误地填写了。非常感谢任何帮助。提前致谢!!

Python Pandas Excel 数据帧 多索引

评论

0赞 Rawson 10/8/2023
您可以创建一个字典或一个系列,其中包含索引和分配给每个索引的值,然后 ..map
0赞 Sai Deepak Chinta 10/8/2023
@Rawson,如果可能的话,你能详细说明一下吗?
0赞 Rawson 10/12/2023
您的数据帧有这么多 NaN 行有点难以阅读,我认为按照我上面的建议使用可能不起作用。我认为您应该将索引设置为第一列,然后堆叠,然后将级别从索引放回列,例如 其中“col_with_gender”是具有“性别 - 男性”等值的列的列名。.mapdf.set_index("col_with_gender").stack(0).reset_index(level=0, drop=False)

答: 暂无答案