[英]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.