df
['ch*', 'co*', 'DePe*', 'DePe*', 'DePe*', 'pm*', 'tpm*', 'lep*']
['ch*', 'co*', 'DePe*', 'DePe*', 'DePe*', 'am*', 'te*', 'qe*','te*']
['ch*', 'co*', 'DePe*', 'ch*', 'DePe*', 'DePe*', 'tpm*', 'lep*']
['ch*', 'DePe*', 'eeae*', 'ps*', 'er*']
Name: df, Length: 4, dtype: object我需要计算在'DePe*‘的最后一个实例(从左到右)之后发生的项目,我正在寻找这样的结果。
df count
['ch*', 'co*', 'DePe*', 'DePe*', 'DePe*', 'pm*', 'tpm*', 'lep*'] 3
['ch*', 'co*', 'DePe*', 'DePe*', 'DePe*', 'am*', 'te*', 'qe*','te*'] 4
['ch*', 'co*', 'DePe*', 'ch*', 'DePe*', 'DePe*', 'tpm*', 'lep*'] 2
['ch*', 'DePe*', 'eeae*', 'ps*', 'er*'] 3发布于 2019-04-08 16:51:10
使用带有lambda函数的apply和反向lists的index,它工作得很好,因为在python中列表是从0开始索引的:
df['count'] = df['A'].apply(lambda x: x[::-1].index('DePe*'))
print (df)
A count
0 [ch*, co*, DePe*, DePe*, DePe*, pm*, tpm*, lep*] 3
1 [ch*, co*, DePe*, DePe*, DePe*, am*, te*, qe*,... 4
2 [ch*, co*, DePe*, ch*, DePe*, DePe*, tpm*, lep*] 2
3 [ch*, DePe*, eeae*, ps*, er*] 3如果可能,可以在try-except语句中指定不存在某些值:
def f(x):
try:
return x[::-1].index('DePe*')
except ValueError:
return np.nan #or return 0
df['count'] = df['A'].apply(f)发布于 2019-04-08 16:49:47
在reversed中使用list.index
my_df['count'] = [list(reversed(l)).index('DePe*') for l in my_df['df']]
df count
0 [ch*, co*, DePe*, DePe*, DePe*, pm*, tpm*, lep*] 3
1 [ch*, co*, DePe*, DePe*, DePe*, am*, te*, qe*,... 4
2 [ch*, co*, DePe*, ch*, DePe*, DePe*, tpm*, lep*] 2
3 [ch*, DePe*, eeae*, ps*, er*] 3发布于 2019-04-08 16:56:33
我是python的新手,所以这个解决方案可能不是你想要的。但我认为这是可行的:
l1 = ['ch*', 'co*', 'DePe*', 'DePe*', 'DePe*', 'pm*', 'tpm*', 'lep*']
count=0
for x in l1:
if x == 'DePe*':
count=0
else:
count+=1
print (count)https://stackoverflow.com/questions/55569369
复制相似问题