反向计算Pandas行的正条纹

2024-05-16 22:03:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想反向的方式计算行中的数字的正条纹 我尝试使用cumsum(),但这对我没有帮助

数据帧的预期输出如下所示:

  country  score_1 score_2 score_3 score_4 score_5  expected_streak
     U.S.     12.4    13.6    19.9      22    28.7                4
   Africa     11.1    15.5     9.2       7    34.2                1
    India     13.9     6.6    16.3    21.8    30.9                3
Australia     25.4    36.9    18.9      29     NaN                0
 Malaysia     12.8     NaN    -6.2    28.6    31.7                2
Argentina     40.7     NaN    16.3    20.1      39                2
   Canada     56.4     NaN     NaN      -2      -1                1

因此,基本上,评分_5应该大于评分_4,以此类推。。。数一数连胜。如果数值大于分数5,则条纹计数结束


Tags: 数据方式数字nan评分country条纹score
1条回答
网友
1楼 · 发布于 2024-05-16 22:03:22

diffcummin一起使用的一种方法:

df2 = df.filter(like="score_").loc[:, ::-1]
df["expected"] = df2.diff(-1, axis=1).gt(0).cummin(1).sum(1)
print(df)

输出:

     country  score_1  score_2  score_3  score_4  score_5  expected
0       U.S.     12.4     13.6     19.9     22.0     28.7         4
1     Africa     11.1     15.5      9.2      7.0     34.2         1
2      India     13.9      6.6     16.3     21.8     30.9         3
3  Australia     25.4     36.9     18.9     29.0      NaN         0
4   Malaysia     12.8      NaN     -6.2     28.6     31.7         2
5  Argentina     40.7      NaN     16.3     20.1     39.0         2
6     Canada     56.4      NaN      NaN     -2.0     -1.0         1

相关问题 更多 >