如何找到并存储要达到大于每行第一个值的值所需的列数?

import pandas as pd
df = {'a': [3,4,5], 'b': [1,2,3], 'c': [4,3,3], 'd': [1,5,4], 'e': [9,4,6]}
df1 = pd.DataFrame(df, columns = ['a', 'b', 'c', 'd', 'e'])
dg = {'b': [2,3,4]}
df2 = pd.DataFrame(dg, columns = ['b'])

原始数据帧为df1。对于每一行,我想查找一个值第一次大于第一列中的值,并将其存储在新的数据框中。

df1
    a   b   c   d   e
0   3   1   4   1   9
1   4   2   3   5   4
2   5   3   3   4   6

df2是结果数据帧。例如,对于df1第1行;第一个值是3,大于3的第一个值是4(列c)。因此,在df2第1行中,我们存储2(从a列到c列有两列)。对于df1第2行,第一个值为4,大于4的第一个值为5(d列)。因此,在df2第2行中,我们存储3(从a列到d共有三列)。对于df1第3行,第一个值是5,大于5的第一个值是6(列e)。因此,在df2第3行中,我们存储4(从a列到e共有4列)。

df2

    b
0   2
1   3
2   4

我会很感激的。

评论
  • 自大狂
    自大狂 回复

    In your case we can do sub , if the value gt than 0 , we get the id with idxmax

    s=df.columns.get_indexer(df.sub(df.a,0).gt(0).idxmax(1))
    array([2, 3, 4])
    df['New']=s