繁体   English   中英

如何为每一行逐行计算列值的顺序?

[英]How to calculate for each row the order of column value by row?

我有一个看起来像这样的 dataframe:

- 日期_x date_y 日期_z
0 2021-02-19 12:26:48+00:00 2021-02-19 16:15:21.510000+00:00 钠盐
1 2021-02-19 16:16:54+00:00 2021-02-10 17:44:01+00:00 2021-02-11 10:10:01+00:00
1 2021-02-21 16:17:54+00:00 2021-02-20 17:44:01+00:00 2021-02-15 10:10:01+00:00

我想为每一行逐行计算每一列的顺序:

- 日期_x date_y 日期_z
0 0 1
1 2 0 1
1 2 1 0

然后获取整个 dataframe 的每一列的平均顺序:

- 日期_x date_y 日期_z
0 1,33333333333333 0,666666666666667 0.5

我尝试使用 pandas Series.argsort()但它与Series.sort_values()相同,而是返回索引而不是值。 然后我想到迭代每一行并查找由 sort_values 提供的列表的索引,但我确定必须有一个更快、更清洁的解决方案?

谢谢

您可以使用DataFrame.rank ,减去 1,获取mean并将Series转换为一行DataFrame by Series.to_frame并转置:

df = df.rank(axis=1).sub(1).mean().to_frame().T
print (df)
     date_x    date_y  date_z
0  1.333333  0.666667     0.5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM