我有一个dataframe,它是考克斯proportional model的predict_survival_function()的输出,它给出了每个月客户的生存概率(索引行号),在列中我们有客户。所以我想得到每个客户的月数,当概率低于0.50时。下面是表的屏幕截图。
我正在寻找的输出类似于下面-假设对于第一个客户**No. 4( Dataframe 中的第一列)**如果概率在第55行小于0.50。那么输出应该是
对于数据框中的所有其他列也是类似的。如有任何帮助,欢迎提供
py49o6xq1#
假设下面的dataframe:
>>> df 4 5 7 0 0.974789 0.976546 0.913151 1 0.918408 0.815823 0.909577 2 0.748928 0.801727 0.856562 3 0.691171 0.791815 0.794988 4 0.442441 0.669530 0.750395 # Customer 4, first value below 0.5 -> row 4 5 0.378585 0.568831 0.561721 6 0.285419 0.287814 0.521966 # Customer 5, first value below 0.5 -> row 6 7 0.240335 0.216207 0.176980 # Customer 7, first value below 0.5 -> row 7 8 0.191656 0.095793 0.118300 9 0.183290 0.087297 0.035063
IIUC,可以使用idxmax:
idxmax
>>> (df <= 0.5).idxmax() 4 4 5 6 7 7 dtype: int64
全输出:
out = ((df <= 0.5).idxmax().rename_axis('Customer Number') .rename('Row Number').reset_index()) print(out) # Output Customer Number Row Number 0 4 4 1 5 6 2 7 7
1条答案
按热度按时间py49o6xq1#
假设下面的dataframe:
IIUC,可以使用
idxmax
:全输出: