【问题标题】:Pandas dataframe: converting column of lists to a list熊猫数据框:将列表列转换为列表
【发布时间】:2020-08-15 07:23:53
【问题描述】:

我有一个数据框df,其中有一列hashtags,这样:

df['hashtags']
>>>
0                                                       NaN
1                                                       NaN
2                                               ['COVID19']
3                                               ['COVID19']
4                         ['CoronaVirusUpdates', 'COVID19']
                                ...                        
132596    ['coronacrise', 'covid19', 'JN', 'NãoÉSóUmNúme...
132597                                          ['covid19']
132598                                ['corona', 'covid19']
132599                                                  NaN
132600                                          ['covid19']
Name: hashtags, Length: 132601, dtype: object

我想创建一个列表,其中包含该列的所有列表元素(Nan 除外)。
我试图通过以下方式列出列表:

li = df['hashtags'].tolist()

但它会将列表转换为字符串并以字符串列表结束。 例如:

li[:5]
>>> 
[nan, nan, "['COVID19']", "['COVID19']", "['CoronaVirusUpdates', 'COVID19']"]

li[:5] 我想要的输出是这样的:

['COVID19', 'COVID19', 'CoronaVirusUpdates', 'COVID19', 'coronavirus', 'covid19']

【问题讨论】:

标签: python pandas list dataframe


【解决方案1】:

想法是首先删除Series.dropna 的缺失值,然后将ast.literal_eval 的列表repr 转换为列表并在列表理解中展平嵌套列表:

df = pd.DataFrame({'hashtags':[np.nan, np.nan, 
                               "['COVID19']", "['COVID19']", 
                               "['CoronaVirusUpdates', 'COVID19']"]})

import ast

out = [y for x in df['hashtags'].dropna() for y in ast.literal_eval(x)]
print (out)
['COVID19', 'COVID19', 'CoronaVirusUpdates', 'COVID19']

【讨论】:

    猜你喜欢
    • 2019-10-12
    • 2017-08-26
    • 2022-01-19
    • 2016-09-25
    • 2018-08-25
    • 1970-01-01
    • 2023-03-30
    • 2021-12-04
    相关资源
    最近更新 更多