python - 熊猫按每一行排序
问题描述
Date Count_Doc Sum_Words S&P 500 Russel 2000 Nasdaq
2017-02-16 0.069946 3.839240 -0.568454 -0.514334 -0.592410
2017-04-12 1.655428 3.667811 -0.891697 -1.450381 -1.047976
2017-04-19 2.371889 2.110689 -0.284174 0.401092 0.427705
2017-04-20 3.261538 2.995514 1.846039 1.360092 1.660339
2017-05-02 0.738549 2.197852 0.081593 -0.849580 -0.231491
我想保持“Count_Doc”和“Sum_Words”列不变,但我正在尝试对其余列进行排序,如下所示:(顺序未排序,只是随机排列)
Date Count_Doc Sum_Words 1st 2nd 3rd
2017-02-16 0.069946 3.839240 S&P 500 Nasdaq Russel 2000
2017-04-12 1.655428 3.667811 Nasdaq S&P 500 Russel 2000
2017-04-19 2.371889 2.110689 Nasdaq S&P 500 Russel 2000
2017-04-20 3.261538 2.995514 Russel 2000 Nasdaq S&P 500
2017-05-02 0.738549 2.197852 Russel 2000 S&P 500 Nasdaq
有没有办法将列的名称作为 DataFrame 值返回?
谢谢!
解决方案
用这个:
df = df.set_index(['Date','Count_Doc','Sum_Words'])
df_out = pd.DataFrame(df.columns[df.values.argsort(1)[::-1]].values,
df.index,
columns=['1st','2nd','3rd']).reset_index()
df_out
输出:
Date Count_Doc Sum_Words 1st 2nd 3rd
0 2017-02-16 0.069946 3.839240 Russel 2000 Nasdaq S&P 500
1 2017-04-12 1.655428 3.667811 Russel 2000 Nasdaq S&P 500
2 2017-04-19 2.371889 2.110689 S&P 500 Russel 2000 Nasdaq
3 2017-04-20 3.261538 2.995514 Russel 2000 Nasdaq S&P 500
4 2017-05-02 0.738549 2.197852 Nasdaq S&P 500 Russel 2000
推荐阅读
- c# - 当我调用 ExecuteScalar 时,',' 附近的语法不正确
- java - 从属性文件中读取反斜杠
- php - mySQL 有时会搜索 null
- wordpress - Wordpress 文章三分之一部分中的组件
- html - CSS中的水平滚动
- jackson - 在流数据解析时从 JSON 模式中选择任何元素
- c# - 如何修复“列的类型值与先前观察到的类型不同”
- reactjs - 如何防止在 ssr 中首次加载 react-loadable?
- r - count() 的值除以一个数字
- julia - 如何让 Rosenbrock23 在 ParameterizedFunctions.jl DSL 中使用 ODE?