提问人:Sai Deepak Chinta 提问时间:10/8/2023 更新时间:10/8/2023 访问量:41
重塑后对数据帧进行转换
Transformations on a dataframe after reshaping
问:
我已将 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(),但由于顺序不同,它被错误地填写了。非常感谢任何帮助。提前致谢!!
答: 暂无答案
评论
.map
.map
df.set_index("col_with_gender").stack(0).reset_index(level=0, drop=False)