【问题标题】:Getting a set of a list from a list of strings从字符串列表中获取一组列表
【发布时间】:2022-01-11 18:32:14
【问题描述】:

我有这个数据框:

df = pd.DataFrame({"c1":["[\"text\",\"text2\"]","[\"bla\",\"bla\",\"bla\"]"]})

我要删除 [] 和 "" :

df["c2"] = df["c1"].apply(lambda x:re.sub('[\["\]]', "", x))

然后我想将df['c2'] 添加到列表中:

list = df['c2'].to_list()

然后我得到这个:['text,text2', 'bla,bla,bla']

到目前为止一切顺利。但是我想要一个只有唯一值的列表,我可以使用set(list)。

问题是我需要得到['text','text2', 'bla','bla','bla'] 而不是['text,text2', 'bla,bla,bla'],所以当我应用`set(list) 我会得到我所期望的:

['text','text2','bla']

【问题讨论】:

    标签: pandas jupyter-notebook


    【解决方案1】:

    试试这个:

    new = []
    for l in list:
        new.extend(l.split(',') )
    new = list(set(new))
    

    导致new 成为

    ['text2', 'text', 'bla']
    
    

    【讨论】:

      【解决方案2】:

      首先,不要使用list 作为变量。其次,一旦你得到['text,text2',...],你就可以使用str.split。所以你的设置是

      {y for x in df['c2'].str.split(',') for y in x}
      

      输出:

      {'bla', 'text', 'text2'}
      

      注意:您可以直接使用正则表达式提取\"之间的所有模式:

      set(df['c1'].str.extractall('\"([^"]+)\"')[0])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-20
        • 2012-01-12
        • 1970-01-01
        • 2015-03-24
        • 2019-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多