【问题标题】:Keep strings present in a list from a column in pandas将字符串保留在熊猫列中的列表中
【发布时间】:2021-12-02 11:32:52
【问题描述】:

我有一个与this question 类似的问题,但挑战相反。我没有删除列表,而是有一个保留列表——我想保留的字符串列表。我的问题是如何使用保留列表来过滤掉不需要的字符串并将想要的字符串保留在列中。

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"]

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    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
    

    【讨论】:

      【解决方案2】:

      使用推导过滤掉你想保留的名字:

      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 的回答比我的快很多。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-21
        • 2022-01-06
        • 1970-01-01
        • 2017-09-17
        • 2019-11-23
        • 2023-01-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多