Python 数据帧在筛选行时不明确

Python 数据帧在筛选行时不明确,python,pandas,Python,Pandas,我需要筛选列以查找包含某些特定单词的行。我的数据集列表包括以下内容 list_datasets=["text1.csv","text2.csv","text3.csv","text4.csv"] 数据集看起来像(行不同;标题-主、次、三级-相同): 我已尝试按如下方式筛选它们: for item in list_datasets: print(item) df = pd.read_csv("path"+item) add_

我需要筛选列以查找包含某些特定单词的行。我的数据集列表包括以下内容

list_datasets=["text1.csv","text2.csv","text3.csv","text4.csv"]
数据集看起来像(行不同;标题-主、次、三级-相同):

我已尝试按如下方式筛选它们:

for item in list_datasets:
            print(item)
            df = pd.read_csv("path"+item)
            add_new_column(df)
     # Filter
        to_search = [] 

        while True:
            q = input("Search term: ")

            if q!='000':
                to_search.append(q)

            if q=='000':
                break
        df['Selected'] = df['Primary, Tertiary'].str.lower().str.contains('|'.join(to_search))
    if df[(df['Selected'] == True)] :
        df['Tested'] = 1
        # do some stuff
我的问题在筛选行中。上面的代码给出了以下错误:

ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
这对应于
如果df[(df['Selected']==True)]:

一些背景:

我想做的是:

例如:在text1中,我想要搜索词:宝马、吉普和丰田;在文本2中,我想搜索菲亚特、雪佛兰、法拉利;等等但是我不知道如何在上面的代码中包含它(我对顺序有点困惑)。我想做的是在代码部分使用过滤的行来“填充”数据集


你能告诉我怎么修吗?

别把它弄复杂了。遍历csv列表,绘制每个csv,并根据您定义的子字符串进行搜索

例如text1-df; 资料

输出


如果df[(df['Selected']==True)],则此
:您可以将数据帧转换为
True
False
语句。您想做什么?我想根据我将手动添加的一些术语(使用while True条件中的输入)过滤每个数据集。我已经更新了问题以更好地解释它。这是否回答了你的问题@AMC:我尝试了以下方法:
df1=df[df['Primary'].str.lower().str.contains('.|'.join(to_search))]
而不是创建新列(
Selected
),并设置
if
语句条件。它起作用了。但是,我不知道如何在
Terziary
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
df=pd.DataFrame({'Primary':['Fiat','Toyota','Mercedes','bmw', 'jeep', 'Porsche','Nissan','Volvo'],'Secondary':['Fiat','Toyota','bmw', 'jeep','Mercedes', 'Porsche','Nissan','Volvo'],'Tertairy':['Fiat','Toyota','Mercedes', 'Porsche','Nissan','bmw', 'jeep','Volvo']})
df

text1search=['bmw', 'jeep',]# Your search phrase
s="|".join(text1search)#Join the search phrase
m = df['Primary'] + df['Secondary']+ df['Tertairy']#Join all columns values
#df['check']= [y for y in ['|'.join([x for x in r])for r in df.values.tolist()]]
df[m.str.lower().str.contains(s, case=False)]#select the rows
#df = df[df.l.str.contains(s, case=False)]
df