【发布时间】:2017-01-05 18:59:21
【问题描述】:
我在尝试对 Pandas 中的列进行排名时遇到错误。这段代码 sn-p 运行良好,将 'col a' 与自身进行排名(例如,AAPL col A 是对等 col A 中最小的)。
df1 = df[['col a', 'col b', 'col c']]
df1 = df1[:5]
df1['rank'] = df1['col a'].rank(axis=0)
print(df1)
col a col b col c rank
ticker
AAPL 0.336250 0.277405 0.243450 1.0
GOOGL 0.536069 0.545514 0.538530 2.5
GOOG 0.536069 0.545514 0.538530 2.5
MSFT 0.546128 0.886630 0.601523 4.0
BRK.B 0.695393 0.738491 0.753857 5.0
我想将 AAPL col a 与 AAPL ['col a', 'col b', 'col c'] 进行排名。
AAPL 的结果将是 3.0。
Pandas 文档建议(至少对我而言)您可以将 axis=1 设置为跨列排名。但是,我收到以下错误:
ValueError: No axis named 1 for object type <class pandas.core.series.Series'>
(注意:我在设置 'axis=columns' 时也会出错)
df1 = df[['col a', 'col b', 'col c']]
df1 = df1[:5]
df1['rank'] = df1['col a'].rank(axis=1)
print(df1)
相关 Pandas 文档
-
DataFrame.rank(axis=0, method='average', numeric_only=None, na_option='keep', ascending=True, pct=False)
axis: {0 or ‘index’, 1 or ‘columns’},默认0 index to direct 排名
【问题讨论】: