首页 > 解决方案 > 添加函数来计算数据框中的“最佳”行

问题描述

如果我有一个像这样的数据框:

    Letter    freq       dollars   
0   a         1          421
1   b         3          32 
2   c         2          97.4
3   d         0          -40
4   e         9          3214

对于给定的行,我的得分函数可能类似于score = freq * log(dollars).

如何获得得分最高的行(字母、频率、美元)?追问,有没有办法让前n行按分数排序?

标签: pythonpandas

解决方案


IIUC

df['score'] = df.freq *  np.log(df.dollars).fillna(0)
df.sort_values(by='score', ascending=False)

    Letter  freq    dollars score
4   e       9       3214.0  72.677444
1   b       3       32.0    10.397208
2   c       2       97.4    9.157652
0   a       1       421.0   6.042633
3   d       0       -40.0   0.000000

推荐阅读