gpt4 book ai didi

python - 或者重新排列 Dataframe 的行

转载 作者:行者123 更新时间:2023-11-30 22:02:33 26 4
gpt4 key购买 nike

我有一个如下所示的数据框:

df = pd.DataFrame({'col1': [i+1 for i in range(10)] + [-i-1 for i in range(10)],
'col2': ['random string'] *20})
print(df)
col1 col2
0 1 random string
1 2 random string
2 3 random string
3 4 random string
4 5 random string
5 6 random string
6 7 random string
7 8 random string
8 9 random string
9 10 random string
10 -1 random string
11 -2 random string
12 -3 random string
13 -4 random string
14 -5 random string
15 -6 random string
16 -7 random string
17 -8 random string
18 -9 random string
19 -10 random string

我想让它看起来像这样:

   col1           col2
0 1 random string
1 -1 random string
2 2 random string
3 -2 random string
4 3 random string
5 -3 random string
6 4 random string
7 -4 random string
8 5 random string
9 -5 random string
10 6 random string
11 -6 random string
12 7 random string
13 -7 random string
14 8 random string
15 -8 random string
16 9 random string
17 -9 random string
18 10 random string
19 -10 random string

我自己的方法似乎需要相当多的行,又名不是Pythonic。我的代码:

df2 = pd.DataFrame(index = df.index,columns = df.columns)

Ypos = df[df['col1'] > 0]
Yneg = df[df['col1'] < 0]

ind_pos = [2*i for i in range(10)]
ind_neg = [2*i+1 for i in range(10)]

df2.loc[ind_pos] = Ypos.rename({k:v for k,v in zip(Ypos.index, ind_pos)})
df2.loc[ind_neg] = Yneg.rename({k:v for k,v in zip(Yneg.index, ind_neg)})
print(df2)

有没有更多的Pythonic方法来实现相同的结果?预先感谢您。

编辑:我想要一个更通用的方法来处理这样的数据框

   col1           col2
0 1 random string
1 2 random string
2 3 random string
3 4 random string
4 5 random string
5 1x random string
6 2x random string
7 3x random string
8 4x random string
9 5x random string
10 1y random string
11 2y random string
12 3y random string
13 4y random string
14 5y random string

最佳答案

使用 abs 创建辅助键后排序

newdf=df.assign(key=df.col1.abs()).sort_values('key').drop('key',1)
newdf
Out[60]:
col1 col2
0 1 random string
10 -1 random string
1 2 random string
11 -2 random string
2 3 random string
12 -3 random string
3 4 random string
13 -4 random string
4 5 random string
14 -5 random string
5 6 random string
15 -6 random string
6 7 random string
16 -7 random string
17 -8 random string
7 8 random string
18 -9 random string
8 9 random string
9 10 random string
19 -10 random string

关于python - 或者重新排列 Dataframe 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53769189/

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