簡體   English   中英

如何檢查列表中的值是否存在於 dataframe 中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM