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' 列值的行
我从 .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
.