我有一个包含2列错误和注释的数据框 我的错误列将在每个单元格中包含一个字符串列表。我需要帮助编写代码来搜索数据框并找到该行的注释,其中“数据框错误”内容与用户输入val1相匹配。
我尝试了给定的代码,但给出的错误长度不匹配
df.loc[df['Error'].values == val1, 'Comments']
其中df是我的数据框,其中包含“错误”和“评论”列
df
Error Comments
['My data1','My data2'] 'Resolution1'
['My data1','My data3'] 'Resolution2'
假设val1 = ['My data1','My data2']
我的结果是通过val1搜索df来找到Resolution1作为输出
答案 0 :(得分:2)
Simplist是比较列表,如果需要完全匹配:
m = df['Error'].apply(lambda x: x == val1)
如果顺序应该不同,请转换为组合并使用comapre:
m = df['Error'].apply(lambda x: bool(set(x) == set(val1)))
如果需要交叉点:
m = df['Error'].apply(lambda x: bool(set(x).intersection(set(val1))))
或者:
m = ~df['Error'].map(set(val1).isdisjoint)
out = df.loc[m, 'Comments']
如果需要更改值:
df.loc[m, 'Comments'] = 'another value'
答案 1 :(得分:1)
如果订单不重要
df[df['Error'].apply(lambda x: ' '.join(x) == ' '.join(val1))]['Comments']
输出
0 'Resolution1'
Name: Comments, dtype: object
如果要考虑订单
df[df.Error.apply(lambda x: True if len(set(x+val1)) == len(x) else False )]['Comments']
输出
0 'Resolution1'
Name: Comments, dtype: object