我想得到 Dataframe 中每一列的值1
最后出现在哪一行的信息,给定最后一行的索引,我想计算出现的"最近",如下所示:
>> df = pandas.DataFrame({"a":[0,0,1,0,0]," b":[1,1,1,1,1],"c":[1,0,0,0,1],"d":[0,0,0,0,0]})
>> df
a b c d
0 0 1 1 0
1 0 1 0 0
2 1 1 0 0
3 0 1 0 0
4 0 1 1 0
预期结果:
>> calculate_recency_vector(df)
[3,1,1,None]
所需的结果显示了每列"多少行之前"的值1
最后一次出现。例如,对于列a
,值1
最后出现在倒数第三行,因此3
在结果向量中的新近性。有什么想法如何实现这一点?
编辑:为了避免混淆,我将最后一列的期望输出从0
改为None
,因为值1
根本没有出现,所以该列没有最近出现。
编辑II:谢谢你的回答!我必须在 Dataframe 形状(42,250)上计算这个最近向量大约150k次。如果有更有效的解决方案,我将不胜感激。
2条答案
按热度按时间wgeznvg71#
这个
产生所需的输出作为
pd.Series
,唯一的区别是结果是浮点的,并且None
被PandasNan
代替,u然后可以取所需的列kognpnkq2#
使用此示例 Dataframe ,您可以定义函数,如下所示:
运行该函数,它将返回: