gpt4 book ai didi

python - 每行 "Rank"DataFrame 列

转载 作者:太空宇宙 更新时间:2023-11-04 00:01:16 25 4
gpt4 key购买 nike

给定一个时间序列 DataFrame 是否可以创建一个具有相同维度的新 DataFrame 但值是每行与其他列相比的排名(最小排序值(value)第一)?

示例:

                 ABC      DEFG      HIJK       XYZ
date
2018-01-14 0.110541 0.007615 0.063217 0.002543
2018-01-21 0.007012 0.042854 0.061271 0.007988
2018-01-28 0.085946 0.177466 0.046432 0.069297
2018-02-04 0.018278 0.065254 0.038972 0.027278
2018-02-11 0.071785 0.033603 0.075826 0.073270

第一行会变成:

            ABC  DEFG  HIJK  XYZ
date
2018-01-14 4 2 3 1

因为 XYZ 在该行中的值最小,而 ABC 的值最大。

numpy.argsort看起来它可能会有所帮助,但是因为它本身会输出位置信息,所以我没能让它正常工作。

非常感谢

最佳答案

rank 使用双 argsort每行并传递给 DataFrame 构造函数:

df1 = pd.DataFrame(df.values.argsort().argsort() + 1, index=df.index, columns=df.columns)
print (df1)
ABC DEFG HIJK XYZ
date
2018-01-14 4 2 3 1
2018-01-21 1 3 4 2
2018-01-28 3 4 1 2
2018-02-04 1 4 3 2
2018-02-11 2 1 4 3

或者使用DataFrame.rank使用方法='密集':

df1 = df.rank(axis=1, method='dense').astype(int)
print (df1)
ABC DEFG HIJK XYZ
date
2018-01-14 4 2 3 1
2018-01-21 1 3 4 2
2018-01-28 3 4 1 2
2018-02-04 1 4 3 2
2018-02-11 2 1 4 3

关于python - 每行 "Rank"DataFrame 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55606843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com