如何从一个数据框基于另一数据框获取行?

时间:2018-09-05 08:56:55

标签: python pandas csv

我有两个.csv格式的文件,这些文件没有任何列名,并且大小不一致。我想在第一个csv文件中选择包含至少一个与第二个csv文件相同的值或单词的行。我尝试了以下方法:

import pandas as pd

df1 =pd.read_csv("C:/Users/User/Desktop/Airtop_routings/ASEAN_20170601_VST_0000_without$.csv",header=None,low_memory=False,dtype=object)

df1.set_index(df1[0])

df2 = pd.read_csv("C:/Users/User/Desktop/Airtop_routings/Singapore Waypoints.csv",header=None,dtype=object)
df3=list(df2[0])
df1.loc[df1.isin(df3)]

但是我收到如下错误:

TypeError:“ float”和“ str”的实例之间不支持“ <”

例如:第一个csv文件

Apple mango parrot snake 100
Mango grapes tiger lion 200 snake bear
tiger apple jackal

第二个CSV文件

apple                                      
tiger             
lion

通过使用第二个csv文件,我想在第一个csv文件中选择行。任何人都可以帮助我,谢谢。

1 个答案:

答案 0 :(得分:0)

使用:

df1 = pd.read_csv(file1)
df2 = pd.read_csv(file2)

pat = '|'.join(r"\b{}\b".format(x) for x in df2['column2'])
df = df1[df1["column1"].str.contains(pat)]