我使用Pandas导入了CSV,并使用字符串条目读入了一列。检查本系列(列)的条目,我发现它们实际上应该是列表。例如:
df['A'] = pd.Series(['["entry11"]', '["entry21","entry22"]', '["entry31","entry32"]'])
我想从字符串中提取列表元素。到目前为止,我已尝试过以下链:
df['A'] = df['A'].replace("'",'',regex=True).
replace('\[','',regex=True).
replace('\]','',regex=True).
str.split(",")
(当然,所有这一切都在一行)。
这让我在一列中找回了我想要的列表元素。
我的问题:有更有效的方法吗?对于应该更容易的事情来说,这似乎很紧张。
答案 0 :(得分:5)
您可"apply" ast.literal_eval()
系列剧:
In [8]: from ast import literal_eval
In [9]: df['A'] = df['A'].apply(literal_eval)
In [10]: df
Out[10]:
A
0 [entry11]
1 [entry21, entry22]
2 [entry31, entry32]
还有map()
和applymap()
- 这是讨论差异的主题: