簡體   English   中英

將字符串保留在 pandas 的列中的列表中

[英]Keep strings present in a list from a column in pandas

我有一個與問題類似的問題,但挑戰相反。 我沒有刪除列表,而是有一個保留列表——我想保留的字符串列表。 我的問題是如何使用保留列表來過濾掉不需要的字符串並將想要的字符串保留在列中。

import pandas as pd

df = pd.DataFrame(
    {
        "ID": [1, 2, 3, 4, 5],
        "name": [
            "Mitty, Kitty",
            "Kandy, Puppy",
            "Judy, Micky, Loudy",
            "Cindy, Judy",
            "Kitty, Wicky",
        ],
    }
)

   ID                name
0   1        Mitty, Kitty
1   2        Kandy, Puppy
2   3  Judy, Micky, Loudy
3   4         Cindy, Judy
4   5        Kitty, Wicky

To_keep_lst = ["Kitty", "Kandy", "Micky", "Loudy", "Wicky"]

Series.str.findallSeries.str.join一起使用:

To_keep_lst = ["Kitty", "Kandy", "Micky", "Loudy", "Wicky"]

df['name'] = df['name'].str.findall('|'.join(To_keep_lst)).str.join(', ')
print (df)
   ID          name
0   1         Kitty
1   2         Kandy
2   3  Micky, Loudy
3   4              
4   5  Kitty, Wicky

使用推導過濾掉要保留的名稱:

keep_names = lambda x: ', '.join([n for n in x.split(', ') if n in To_keep_lst])
df['name'] = df['name'].apply(keep_names)
print(df)

# Output:
   ID          name
0   1         Kitty
1   2         Kandy
2   3  Micky, Loudy
3   4              
4   5  Kitty, Wicky

注意:@jezrael 的答案比我的要快得多。

暫無
暫無

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

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