参照其他值从pandas数据帧中提取值



我有一个数据帧:

d= {'page_number':[0,0,0,0,0,0,1,1,1,1], 'text':[aa,ii,cc,dd,ee,ff,gg,hh,ii,jj]}
df = pd.DataFrame(data=d)
df

page_number   text
0     0           aa
1     0           ii
2     0           cc
3     0           dd
4     0           ee
5     0           ff
6     1           gg
7     1           hh
8     1           ii
9     1           jj

我想找出"gg"出现的页码,现在在同一个页码上可以有许多不同的子字符串,但我有兴趣提取"ii"出现在"gg"的同一页码上的行号(对获得其他"ii"子字符串出现的结果不感兴趣(

idx=np.where(df['text'].str.contains(r'gg', na=True))[0][0]

在这里不一定有帮助,因为它检索的是"gg"的行号,而不是它的"page_number"。

非常感谢

您首先只留下'ii'和'gg'的外观:

df = df[df['text'].isin(['ii', 'gg'])

然后,通过按页码分组,我们可以假设当我们得到2时,它们就在同一页上:

df2 = df.groupby('page_number').count()
df2[df2['text'] == 2]

您可以使用panda在另一列值的基础上检索列值。我希望这能找回你想要的东西。df[df['text']=='gg']['page_number']

如果您在任何页面上都有多个'gg和'ii':

这将返回一个布尔序列:

df = df.groupby(by='page_number').agg(lambda x: True if 'gg' in x.values 
and 'ii' in x.values else False)

这会给你的页数

df[df.text].index

相关内容

  • 没有找到相关文章

最新更新