你好,我有一個資料框:
name; id ; firstname ;lastname
MD ALEXIA DORTMINEX ; 1; ALEXIA ; DORTMINEX
DOC PAULO RODRIGEZ ; 3 ; PAOLO ; SANCHEZ
如果名稱包含姓氏,我只想保留行(即姓氏在名稱中)
在我們的例子中,我們只保留:
name; id ; firstname ;lastname
MD ALEXIA DORTMINEX ; 1; ALEXIA ; DORTMINEX
因為 DORTMINEX 在 MD ALEXIA DORTMINEX
謝謝
uj5u.com熱心網友回復:
您可以使用apply和切片:
df[df.apply(lambda r: r['lastname'] in r['name'], axis=1)]
輸出:
name id firstname lastname
0 MD ALEXIA DORTMINEX 1 ALEXIA DORTMINEX
uj5u.com熱心網友回復:
您可以使用list將回傳布林值 ( True / False)的理解來檢查您的姓氏列是否包含您的姓名列。將它loc放入其中將使用結果布林值過濾您的資料框,這將為您提供所需的內容:
>>> [name[0] in name[1] for name in zip(df['lastname'], df['name'])]
[True, False]
>>> df.loc[[name[0] in name[1] for name in zip(df['lastname'], df['name'])]]
name id firstname lastname
0 MD ALEXIA DORTMINEX 1 ALEXIA DORTMINEX
uj5u.com熱心網友回復:
您可以使用apply()函式檢查姓氏在名稱中的每一行,然后使用此掩碼過濾資料。
如下:
mask = df.apply(lambda x: x['lastname'] in x['name'], axis=1)
df = df[mask]
這將輸出:
name id firstname lastname
0 MD ALEXIA DORTMINEX 1 ALEXIA DORTMINEX
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/383776.html
上一篇:使用兩個資料框如何將查找值作為另一個資料框中列中的子字串進行比較,以在匹配項存在時創建新列
下一篇:提取資料框列名和行索引中的特定值
