Python 在数据框(Excel MATCH())中查找下一个出现的数字

Python 在数据框(Excel MATCH())中查找下一个出现的数字,python,Python,总之,我已经四处寻找我的问题的解决方案,但找不到任何我喜欢的方法。我试图使用以下脚本复制Excel的MATCH()函数,以查找数据框中下一个出现的编号1。我不熟悉编码,所以可能忽略了一些简单的东西 我创建的示例数据集如下所示: import pandas as pd import numpy as np df=pd.DataFrame({'secondcol': [0, 0, 0, 1, 1, 0, 1]}) for i in range(0,len(a)): c+=str(a[i:]

总之,我已经四处寻找我的问题的解决方案,但找不到任何我喜欢的方法。我试图使用以下脚本复制Excel的MATCH()函数,以查找数据框中下一个出现的编号
1
。我不熟悉编码,所以可能忽略了一些简单的东西

我创建的示例数据集如下所示:

import pandas as pd
import numpy as np
df=pd.DataFrame({'secondcol': [0, 0, 0, 1, 1, 0, 1]})
for i in range(0,len(a)):
    c+=str(a[i:].index(1))
print(c)
我一直在尝试的代码是:

df['match']=df['secondcol'].index(next(lambda x: x!=0, df['secondcol'])
这就产生了这个错误:

TypeError: 'function' object is not an iterator
预期的结果是:

       match  secondcol
0      3          0
1      2          0
2      1          0
3      0          1
4      0          1
5      1          0
6      0          1

我已经查找了错误,但无法找出如何更改代码以删除它。任何帮助都将不胜感激,谢谢

这样做:

import pandas as pd
import numpy as np
df=pd.DataFrame({'secondcol': [0, 0, 0, 1, 1, 0, 1]})
for i in range(0,len(a)):
    c+=str(a[i:].index(1))
print(c)
试试这个:

import pandas as pd
import numpy as np
df=pd.DataFrame({'secondcol': [0, 0, 0, 1, 1, 0, 1]})
b = df["secondcol"].tolist()
c=[b[i:].index(1) for i in range(0,len(b))]
df['match']=c

谢谢@Rohit Pandey。我试过你的建议,但执行起来有困难。我还尝试了'df['match']=np.nonzero(df['secondcol']),这也产生了一个错误…我将继续修补它,再次感谢您的帮助!第二个非常好用…非常感谢!我很抱歉,我是一个非常新的成员,没有必要的15学分的升级投票;当我达到那个水平时,我会尽力记住的。