gpt4 book ai didi

python - Pandas :从左到右和从右到左交替 iterrows()

转载 作者:太空宇宙 更新时间:2023-11-04 05:49:24 24 4
gpt4 key购买 nike

我是编程新手,到目前为止,这个问题已经“超出了我的薪水等级”,因此非常感谢您对此提供的任何帮助!

我有一个如下所示的 DataFrame 对象:

               Dan          Mike            Dave
0 Adrian Peterson Eddie Lacy Jamaal Charles
1 Calvin Johnson Leveon Bell Dez Bryant

我想创建一个新的 DataFrame 对象,如下所示:

             Player       Drafter
0 Adrian Peterson Dan
1 Eddie Lacy Mike
2 Jamaal Charles Dave
3 Dez Bryant Dave
4 Leveon Bell Mike
5 Calvin Johnson Dan

我不确定如何从左到右遍历第一行,然后从右到左遍历第二行。

非常感谢您的帮助!

最佳答案

我认为在这种情况下最好显示至少 3 轮以检查代码(假设您想要的东西比仅仅 2 轮更通用),所以我将扩展示例数据:

               Dan          Mike            Dave
0 Adrian Peterson Eddie Lacy Jamaal Charles
1 Calvin Johnson Leveon Bell Dez Bryant
2 Tom Brady Lionel Messi Lebron James

首先,使用stack()获取暂定草稿订单。

df2 = df.stack().reset_index().reset_index()
df2.columns = ['Order','Round','Drafter','Player']

Order Round Drafter Player
0 0 0 Dan Adrian Peterson
1 1 0 Mike Eddie Lacy
2 2 0 Dave Jamaal Charles
3 3 1 Dan Calvin Johnson
4 4 1 Mike Leveon Bell
5 5 1 Dave Dez Bryant
6 6 2 Dan Tom Brady
7 7 2 Mike Lionel Messi
8 8 2 Dave Lebron James

请注意,第 0 轮和第 2 轮的顺序是正确的,但第 1 轮不是。确定第 1 轮顺序的一种相当简单的方法是乘以负数 1(更具体地说,所有不能被 2 整除的轮次)然后排序:

df2['Order'] = np.where( df2['Round'].mod(2)==1, -df2['Order'], df2['Order'] )

df3 = df2.sort(['Round','Order']).reset_index(drop=True)

Order Round Drafter Player
0 0 0 Dan Adrian Peterson
1 1 0 Mike Eddie Lacy
2 2 0 Dave Jamaal Charles
3 -5 1 Dave Dez Bryant
4 -4 1 Mike Leveon Bell
5 -3 1 Dan Calvin Johnson
6 6 2 Dan Tom Brady
7 7 2 Mike Lionel Messi
8 8 2 Dave Lebron James

此时草稿订单现在已由索引正确保存,您可以删除订单列(我只是将其保留在那里以使其代码的工作方式更加明显)。

关于python - Pandas :从左到右和从右到左交替 iterrows(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30958287/

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