【问题标题】:Python - Calculating ranks related to a dataframe column that includes blank cellsPython - 计算与包含空白单元格的数据框列相关的排名
【发布时间】:2021-04-22 19:01:50
【问题描述】:

我有一个 Panda 数据框,并且想要生成一个额外的列来保存 pd 中原始列的等级。但是,该列有空单元格。这些空单元格的排名也应该是空的。

当我使用时

df['RRanked'] = df['R'].rank(ascending=1,na_option='keep') 

它仍然会为空单元格生成排名。在这种情况下,空单元格将获得最高排名。

如何为那些空单元格生成空行列?

谢谢!

【问题讨论】:

  • R是什么数据类型?不需要的单元格是空的还是没有?
  • 什么是空行?更像0?因为排名返回 None 到缺失值
  • type(df['R']) 给出 pandas.core.series.Series
  • 好吧,当我使用命令时: df['RRanked'] = df['R'].rank(ascending=1,na_option='keep') 我确实得到了一个单元格的排名那在 R 中是空的。这里的空我真的是指空的。只是空白。
  • 你能发布你的数据框的例子吗?

标签: python pandas dataframe rank


【解决方案1】:

我会将列强制转换为数值,然后您可以将 rank 与 na_option='keep' 一起使用,这不会对 NaN 进行排名。

r = pd.to_numeric(df.R, errors='coerce')
rnk = r.rank(na_option='keep')

【讨论】:

  • 谢谢。我也试过那个。没有成功。很奇怪的东西。
【解决方案2】:

好吧,我以一种不太“干净”的方式解决了它。我设法用 NaN 替换了所有这些单元格。然后我使用了 Yefet 的友好答案:df['R'].apply(lambda x: pd.NA if x in ["NaN"] else x).rank(ascending=1)。后来,我只是将 Ranks 中的 NaN 替换为“”。这行得通。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 2020-02-03
    • 2022-12-16
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多