[英]How to check if a value in the list exists in the dataframe?
得到一個包含 5 列的數據框和一個包含 20 個值的列表。
如果列表中的值與列中的任何值完全匹配,則它必須將 append 值(列表值)設置為空列。
list=["siper","glock","tip",............]
輸入(數據框)DF1:
所需 OUTPUT:
我的代碼用於檢查列表中的值是否存在於數據框中。
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)])
如果列表中的值與任何列匹配,上面的代碼給出了數據框中所有行的列表,但我不確定如果有任何匹配項,如何將列表中的 append 值添加到 column1。 另外,如果沒有匹配項,我想將“Unknow”添加到 column1。
嘗試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
嘗試這個:
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)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.