在数据帧中查找下一个数字(Excel MATCH())

时间:2018-01-04 04:59:34

标签: python

所有,我一直在寻找解决问题的方法,但找不到任何可行的方式。我正在尝试使用以下脚本复制Excel的MATCH()函数,以查找数据帧中下一个出现的数字1。我是编码的新手,所以可能会忽视一些简单的事情。

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

import pandas as pd
import numpy as np
df=pd.DataFrame({'secondcol': [0, 0, 0, 1, 1, 0, 1]})

我一直在尝试的代码是:

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

我已查找错误,但无法弄清楚如何更改代码以删除它。非常感谢任何帮助,谢谢!

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