Pandas 通过返回列表中匹配字符串的行创建一个新数据框,该列表针对另一个数据框的 1 列中的单元格进行检查

Pandas create a new dataframe by returning the rows matching strings from a list checked against cells in 1 column from an another dataframe

我从 .csv 创建了一个数据框,行数刚好超过 380 万:

import pandas as pd
import csv

file_name = 'bigfile.csv'
bigfile_df = pd.read_csv (file_name, low_memory=False)

然后我要导入第二个 csv,我想将其作为我的列表:

input_df = pd.read_csv('list.csv', delimiter=',')

然后将其转换为列表:

l = input_df['Column_Name'].tolist()

打印出来的样子:

['Text Text Text', 'Text Text Text', 'Text Text Text']

该列表相当大,包含超过 12,000 行并包含字符串。

我想做的是获取列表中的每个条目并检查 bigfile_df 中的列 ['Name'] 的单元格内是否有任何匹配项,并创建一个包含整个数据框的新数据框这些比赛的行。

我希望这一切都有意义,我已经寻找类似的例子来尝试回答这个问题但找不到。预先感谢您的任何回复。

您可以使用查询方法实现:

output_dfs = []
for entry in l:
    output_dfs.append(bigfile_df.query('Name == @entry')

编辑:我可能误会了,如果你想要一个数据框,你可以这样做:

output_df = bigfile_df.query('Name in @l')

这将在 bigfile_df 的所有行中搜索列表 l.

中具有 'Name' 列值的行