如何检查列表中的值是否存在于数据框中?
How to check if a value in the list exists in the dataframe?
获得了一个包含 5 列的数据框和一个包含 20 个值的列表。
如果列表中的值与列中的任何值完全匹配,则它必须将该值(列表值)附加到空列。
list=["siper","glock","tip",............]
输入(数据框)DF1:
期望的输出:
我的代码用于检查列表中的值是否存在于数据框中。
list=["siper","glock","tip",............]
df2=[]
for i in list:
mask=np.column_stack([df[col]==i for col in df])
df2.append(df.loc[mask.any(axis=1)])
如果列表中的值与任何列匹配,上面的代码给出了数据框中所有行的列表,但我不确定如果有任何匹配项,如何将列表中的值附加到 column1。另外,如果没有匹配项,我想将“Unknow”添加到 column1。
试试这个:
df['column1'] = np.array(['unknown', *l])[np.max([df.apply(lambda col: col.str.contains(item)).mul(i+1).sum(axis=1) for i, item in enumerate(list)], axis=0)]
尝试 str.extract
:
lst = ['glock', 'siper']
df['D'] = df.apply(lambda x: x.str.extract(fr"\b({'|'.join(lst)})\b")
.bfill().iloc[0].fillna('unknown'), axis=1)
print(df)
# Output
A B C D
0 lfkdjs siper ldjkslkdjq siper
1 the glock hammer ldksqjflsdkj dljkfdslkfjs glock
2 lfdkslkdfjsdl dflskjfsdlkjf tipper unknown
3 fdlsjkfsldkjf dlfjksdflkdsjfs The glockmaster hammer unknown
获得了一个包含 5 列的数据框和一个包含 20 个值的列表。
如果列表中的值与列中的任何值完全匹配,则它必须将该值(列表值)附加到空列。
list=["siper","glock","tip",............]
输入(数据框)DF1:
期望的输出:
我的代码用于检查列表中的值是否存在于数据框中。
list=["siper","glock","tip",............]
df2=[]
for i in list:
mask=np.column_stack([df[col]==i for col in df])
df2.append(df.loc[mask.any(axis=1)])
如果列表中的值与任何列匹配,上面的代码给出了数据框中所有行的列表,但我不确定如果有任何匹配项,如何将列表中的值附加到 column1。另外,如果没有匹配项,我想将“Unknow”添加到 column1。
试试这个:
df['column1'] = np.array(['unknown', *l])[np.max([df.apply(lambda col: col.str.contains(item)).mul(i+1).sum(axis=1) for i, item in enumerate(list)], axis=0)]
尝试 str.extract
:
lst = ['glock', 'siper']
df['D'] = df.apply(lambda x: x.str.extract(fr"\b({'|'.join(lst)})\b")
.bfill().iloc[0].fillna('unknown'), axis=1)
print(df)
# Output
A B C D
0 lfkdjs siper ldjkslkdjq siper
1 the glock hammer ldksqjflsdkj dljkfdslkfjs glock
2 lfdkslkdfjsdl dflskjfsdlkjf tipper unknown
3 fdlsjkfsldkjf dlfjksdflkdsjfs The glockmaster hammer unknown