我对python还是比较陌生,如果这个问题很简单,请抱歉。我有一个带有两列的pandas数据框,一个文件ID号和该文件中的关键字列表。我本质上希望能够遍历每一行,并查看所选关键字是否在文件关键字列表中,以及是否已打印出文件ID。或者,我可以创建一个所有正匹配的新数据框,然后从那里打印文件ID。研究之后,我想使用df.loc[df['key words'] == key_word, :]
这将为我提供所有正匹配的新数据框。问题是,没有正匹配项,因为我忘记了“关键词”列中的每一行都有关键词列表。谁能帮助我找到解决方案? (最好是一个基本的,因为我确实是新来的)。非常感谢。
解决方案可以是熊猫内部联接:您最好先将您的key_word数组转换为熊猫数据帧。假设您已将数组另存为“ key_words.csv”,并给该标签加上“ my_key”:
col_name = ['my_key']
df1 = pd.read_csv("key_words.csv", names = col_name ,skiprows=[0],encoding ='utf-8')
使用skip_rows [0],如果您的第一行是注释,则不要忽略它!!!请注意:非常重要的一点是,您的key_words编码和要比较的引用列的编码必须完全相同!!!所以你可以做:
df1[col_name] = dfcat1[col_name].astype(str)
df1 = df1.convert_dtypes()
您还需要为df ['keyword']列重复相同的dtype转换。
然后您可以使用内部联接:
df12 = df1.merge(df, how ='inner', left_on = key1, right_on = key)
Key1和Key是您要比较的列的标签。df12仅包含具有公共关键字字符串的行。