Python:创建新的dataframe列,显示相对于其他列值的排名
python中的原始数据帧:Python:创建新的dataframe列,显示相对于其他列值的排名,python,pandas,Python,Pandas,python中的原始数据帧: date cash hy equity 0 2003-01-31 1 3 4 1 2003-01-31 2 5 1 2 2003-01-31 1 6 3 目标:创建三个新列,将每个资产类别相对于其他两个资产类别进行排序。0=最低回报资产类别。2=最高回
date cash hy equity
0 2003-01-31 1 3 4
1 2003-01-31 2 5 1
2 2003-01-31 1 6 3
目标:创建三个新列,将每个资产类别相对于其他两个资产类别进行排序。0=最低回报资产类别。2=最高回报资产类别
date cash hy equity cash_rank hy_rank equity_rank
0 2003-01-31 1 3 4 0 1 2
1 2003-01-31 2 5 1 1 2 0
2 2003-01-31 1 6 3 0 2 1
我使用的代码如下:
x = [2, 5, 1]
arranged = sorted(x)
sorted_list = []
for i in x:
sorted_list.append(arranged.index(i))
这将返回新的排序_列表=[1,2,0],这是第二行中资产类返回的顺序
我不知道如何使用dataframe.apply()方法或任何其他方法将此应用于列组列。您可以
apply
rank
df = df.join(df.loc[:,'cash':].apply(pd.Series.rank,1).sub(1).add_suffix('_rank'))
df
Out[145]:
date cash hy equity cash_rank hy_rank equity_rank
0 2003-01-31 1 3 4 0.0 1.0 2.0
1 2003-01-31 2 5 1 1.0 2.0 0.0
2 2003-01-31 1 6 3 0.0 2.0 1.0
太快了!很好的回答:)+1