搜索并标记两个数据帧之间的页码

时间:2018-03-29 11:29:54

标签: python pandas

我有两个数据帧:

df = ['sentence1', 'sentence2', 'sentence3', 'sentence4']
df_pages = {['para1', 'pgno'], ['para2', 'pgno']

df - 一列数据帧 df_pages - 两列(段落和页面编号)。 请原谅我提到df和df_pages的方式。

我正在尝试在df_pages中搜索df,如果句子出现在两个段落中的任何一个 - 我想提取相关的页码。直到现在我尝试了以下内容:

for i in df['column']:
for j in df_pages['column']:
    if i in j:
        print(df_pages['PageNumber'])

但是,它多次打印整个列。

2 个答案:

答案 0 :(得分:0)

因为您使用df_pages['PageNumber']打印整个列。尝试将行索引添加到表达式。

for i in df['column']:
for idx, j in enumerate(df_pages['column']):
    if i in j:
        print(df_pages.loc[idx, 'PageNumber'])

假设您的索引是数字并从零开始,这应该可以。

答案 1 :(得分:0)

df_pages['PageNumber']打印整个列。您必须指定要打印的行。


解决方案1:您可以添加行索引来实现此目的。 count表示行索引。

for i in df['column']:
    for count,j in enumerate(df_pages['column']):
        if i in j:
            print(df_pages['PageNumber'][count])

解决方案2 :您也可以像{czr建议的那样使用.loc

for i in df['column']:
    for count, j in enumerate(df_pages['column']):
        if i in j:
            print(df_pages.loc[count, 'PageNumber'])


这是我用来重新创建你的例子的数据 这两种解决方案都可以处理这些数据,并在这种情况下打印234

import pandas as pd
df = pd.DataFrame({'column':['sentence1', 'sentence2', 'sentence3', 'sentence4']})
df_pages = pd.DataFrame({'column':['para1 sentence1', 'para2'], 'PageNumber':['234', '567']})
#>> 234