我有两个数据帧:
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'])
但是,它多次打印整个列。
答案 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