簡體   English   中英

如何根據另一個數據框的完整字符串列過濾 pandas dataframe 子字符串?

[英]How can I filter a pandas dataframe of substrings based on another dataframe's column of full strings?

我有兩個 pandas 數據幀,我需要過濾 df2 並獲得一個新的 df,其中只有基於 substring 匹配的匹配行。 我可以通過完全匹配來做到這一點,但不是部分匹配。 我已經嘗試了一些事情,但無法弄清楚我錯過了什么。

df1 看起來像:

      LEVEL    SO#     LI# BOMITEM              PRTNO  
0         1  00000  000000    0000     123-456789-001  
1         2  00000  000000    0000     123-456019-002 
2         3  00000  000000    0000     123-456029-003  
3         4  00000  000000    0000     123-456039-004  
4         5  00000  000000    0000     123-456049-005  

df2 看起來像:

                          name  test_table_id   pk version       Key_PN
0                Somename                  48   48     1.0
1                Somename                  48   49     1.1  123-456789-
2                Somename                  48  201     1.2  000-000000-000
3                Somename                  48  202     1.3  123-984560-000
4                Antoher name              193 194     1.0  123-984560-321

我正在尋找一個看起來像這樣的 dataframe:

                          name  test_table_id   pk version       Key_PN
0                Somename                  48   48     1.1  123-456789-

這是我使用的代碼,僅適用於完全匹配:

df 2= df2[pd.Series(list(df2['Key_PN']), index=df2.index).isin(list(df1['PRTNO']))]

使用正則表達式刪除 df.PRTNO 中的最后 2 位數字,然后使用 .isin() 檢查相似性

df2[df2.Key_PN.isin(df['PRTNO'].str.replace("\d+$",""))]



    name  test_table_id  pk  version       Key_PN
1  Somename             48  49      1.1  123-456789-

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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