gpt4 book ai didi

python - 使用多个列组 reshape Pandas Dataframe

转载 作者:行者123 更新时间:2023-12-04 01:18:59 27 4
gpt4 key购买 nike

我目前有一个宽数据框,如下所示:

Index ID1 ID2 Foc_A Foc_B Foc_C Sat_A Sat_B Sat_C
0 r 1 10 15 17 100 105 107
1 r 2 20 25 27 110 115 117
2 s 1 30 35 37 120 125 127
3 s 2 40 45 47 130 135 137
每个条目都有多个标识符列(ID1 和 ID2)。然后我有两个单独的测量类别(Foc 和 Sat),每个类别都包含多个标识符(A、B、C)(类别标识符在类别之间共享)。我最终需要将它绘制在一个 facet_grid 中,其中 x 和 y 作为每个测量类别并由类别标识符分隔,所以我试图 reshape 它,使其看起来像这样:
Index ID1 ID2 Ch  Foc  Sat 
0 r 1 A 10 100
1 r 1 B 15 105
2 r 1 C 17 107
3 r 2 A 20 110
4 r 2 B 25 115
5 r 2 C 27 117
6 s 1 A 30 120
7 s 1 B 35 125
8 s 1 C 37 127
我一直在尝试 .melt、.pivot 和 .stack,但不明白我做得足够好以取得进展。

最佳答案

你正在以正确的方式思考。你可以做:

# melt the dataframe
d1 = df.set_index(['Index', 'ID1', 'ID2']).stack().reset_index()

# create separate column
d1[['flag', 'Ch']] = d1['level_3'].str.split('_', expand=True)
d1 = d1.drop('level_3', 1)
d1 = d1.rename(columns = {0: 'Foc'})

# expand the dataframe to wide
d2 = pd.pivot_table(d1, index=['Index', 'ID1', 'ID2', 'Ch'], columns=['flag']).reset_index()

# fix column names
d2.columns = ['Index', 'ID1', 'ID2', 'Ch', 'Foc', 'Sat']

print(d2.head())

Index ID1 ID2 Ch Foc Sat
0 0 r 1 A 10 100
1 0 r 1 B 15 105
2 0 r 1 C 17 107
3 1 r 2 A 20 110
4 1 r 2 B 25 115

关于python - 使用多个列组 reshape Pandas Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62883806/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com