簡體   English   中英

Python Pandas:創建等級列,移動原始列的最大等級

[英]Python Pandas: create rank columns, move orginal column max rank

我需要能夠
1.計算所有行中每一列的排名,
2.找到每行的最大列標簽,
3.然后在每一行中移動原始df的最大排名列。

僅使用原始df中的數據時,這樣做很簡單。 但是,如果需要不同的排名調用,似乎很難完成。

下面是我的Python Pandas代碼來完成此任務。 但這行不通。 似乎沒有像我期望的那樣解釋我的陳述, df1['maxV'] = df1[df1['maxR']] 提出的建議將不勝感激。

import pandas as pd
import numpy ass np
df1 = pd.DataFrame(np.random.randn(10,3),columns=list('ABC')
rankV = df1.pct_change(3) # calculate ranking values
df1['maxR'] = rankV.idxmax(axis=1) # add max ranked column label of rankv
df1['maxV'] = df1[df1['maxR']] # move max ranked column value to maxV

迭代行並在數組中累積值:

maxVals = [np.nan]*3

for index, row in df1[pd.notna(df1['maxR'])].iterrows():   
      maxVals.append(df1.loc[index, row['maxR']])

df1['maxV'] = maxVals

替代方法:不太直觀的方法可能是使用索引和值來索引df1 ,這將返回更寬的Dataframe(#列等於#行),其對角線為最大值:

maxVals = [np.nan]*3
newDf = df1.loc[df1['maxR'][3:].index, df1['maxR'][3:].values]
maxVals.extend(np.diag(newDf))
df1['maxV'] = maxVals

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM