我有一个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']
想法是先通过删除缺失的值Series.dropna
,然后将列表repr转换ast.literal_eval
为列表,并在列表理解中展平嵌套列表:
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']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句