如何从数据框中获取行中的列表值

时间:2019-07-13 19:31:25

标签: python-3.x pandas list dataframe

我有一个来自社交网络的消息数据框。在这个日期框架中,我使用lambda函数创建了一个不带停用词的新列。结果是在此新列中,将值插入列表中。我需要的是在此列表中获取值。

我所拥有的:

raw_data = {'CLASS':['1', '2', '3', '1', '2','3','2'],
        'MESSAGES': [['mama', 'said', 'home'],['dad', 'said', 'soccer', 'reality'], ['matrix', 'you'],
                     ['run', 'neo', 'free'], ['what', 'doing'], ['begnning', 'believe'],
                    ['choice', 'let', 'you', 'free', 'mind']]}
dfRaw = pd.DataFrame(raw_data, columns = ['CLASS','MESSAGES'])

我需要什么:

clean_data = {'CLASS':['1', '2', '3', '1', '2','3','2'],
            'MESSAGES':['mama, said, home', 'dad, said, soccer, reality', 'matrix, you', 'run, neo, free', 'what, doing','begnning, believe','choice, let, you, free, mind']}
dfEndResult = pd.DataFrame(clean_data, columns = ['CLASS','MESSAGES'])

我在堆栈上的某个位置读了一个建议功能的主题:

dfRaw.applymap(lambda x: x if not isinstance(x, list) else x[0] if len(x) else '')

但是对于我来说,此功能并不有趣,因为当列表仅包含一个元素时,此功能非常有效。就我而言,每个单元格都有不同的大小列表。

谢谢大家的帮助。

1 个答案:

答案 0 :(得分:1)

使用str.join

dfRaw['MESSAGES'] = dfRaw['MESSAGES'].str.join(', ')

  CLASS                      MESSAGES
0     1              mama, said, home
1     2    dad, said, soccer, reality
2     3                   matrix, you
3     1                run, neo, free
4     2                   what, doing
5     3             begnning, believe
6     2  choice, let, you, free, mind