gpt4 book ai didi

python - 取 3 列并使用 stack() 将其变为 2 列

转载 作者:行者123 更新时间:2023-11-30 22:09:35 25 4
gpt4 key购买 nike

我不太了解 stack() 函数的使用或如何以这种特定方式实现它。事实上,也许堆栈甚至不是看待这个问题的正确方法。但我尝试了,它让我接近了我想要的东西。

我尝试获取此数据框:

gid     v    h
4791 ATL PHI
4792 BUF BAL
4793 PIT CLE
4794 CIN IND
4795 TEN MIA
4796 SF MIN
4797 HOU NE
4798 TB NO
4799 JAC NYG
4800 KC LAC

使用 df.stack() 可以让我接近我想要的,但不完全是。我不确定如何使用列作为参数来解决这个问题。我可以只迭代数据帧的行,但我觉得这可能不是最快、最有效的方法。我只想将最后两列与第一列 gid 重复堆叠。例如,这是我尝试获得的输出:

gid     team
4791 ATL
4791 PHI
4792 BUF
4792 BAL
4793 PIT
4793 CLE
4794 CIN
4794 IND
4795 TEN
4795 MIA
4796 SF
4796 MIN
4797 HOU
4797 NE
4798 TB
4798 NO
4799 JAC
4799 NYG
4800 KC
4800 LAC

最佳答案

我认为需要set_index第一个,最后一个双 reset_index用于删除 MultiIndex 级别和 index 中的列:

df1 = df.set_index('gid').stack().reset_index(level=1, drop=True).reset_index(name='team')

或者使用melt ,但值未排序,因此 sort_values是必要的:

df1 = (df.melt('gid', value_name='team')
.sort_values('gid')
.drop('variable', axis=1)
.reset_index(drop=True))
<小时/>
print (df1)
gid team
0 4791 ATL
1 4791 PHI
2 4792 BUF
3 4792 BAL
4 4793 PIT
5 4793 CLE
6 4794 CIN
7 4794 IND
8 4795 TEN
9 4795 MIA
10 4796 SF
11 4796 MIN
12 4797 HOU
13 4797 NE
14 4798 TB
15 4798 NO
16 4799 JAC
17 4799 NYG
18 4800 KC
19 4800 LAC

关于python - 取 3 列并使用 stack() 将其变为 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51878278/

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