pandas - 使用 Pandas 按绝对值对列进行排序

标签 pandas

我正在尝试在 abs(C) 上对这个数据框进行排序

      A     B     C
0  10.3  11.3 -0.72
1  16.2  10.9 -0.84
2  18.1  15.2  0.64
3  12.2  11.3  0.31
4  17.2  12.2 -0.75
5  11.6  15.4 -0.08
6  16.0  10.4  0.05
7  18.8  14.7 -0.61
8  12.6  16.3  0.85
9  11.6  10.8  0.93

为此,我必须追加一个新列 D = abs(C),然后对 D 进行排序

df['D']= abs (df['C'])
df.sort_values(by=['D'])

有没有一种方法可以完成这项工作?

最佳答案

使用 Series.argsort通过 Series.abs 获取绝对值的位置然后按 DataFrame.iloc 更改行的顺序:

df2 = df.iloc[df.C.abs().argsort()]
print (df2)
      A     B     C
6  16.0  10.4  0.05
5  11.6  15.4 -0.08
3  12.2  11.3  0.31
7  18.8  14.7 -0.61
2  18.1  15.2  0.64
0  10.3  11.3 -0.72
4  17.2  12.2 -0.75
1  16.2  10.9 -0.84
8  12.6  16.3  0.85
9  11.6  10.8  0.93

关于pandas - 使用 Pandas 按绝对值对列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60862536/

相关文章:

python - Pandas 数据框分组日期时间月

python - Pandas - 沿非索引轴连接两个 df,合并非索引轴上具有相同值的行

Python,Pandas 根据值选择行

Python Pandas - 使用 to_sql 以 block 的形式写入大数据帧

python - Pandas 使用 while 循环遍历数据框和列表

python - Pandas 合并处理连接输出中的重复项

python - 如何在 Python3 中将数据框转换为字典

python - 如何使用 .shift() 根据条件过滤数据框

python - 在 Pandas 数据框中取消旋转具有相同名称的多列

python - Pandas 在基于其他列的列中删除值