一个detaframe,其中一列为数据,另一列为以str存储的形似字典的字符串,如何将这形似字典的字符串改为列表
时间: 2024-03-17 21:46:23 浏览: 55
可以使用 Pandas 中的 apply 方法和 ast 模块中的 literal_eval 函数,将字符串形式的字典转换为字典类型,再将字典类型转换为列表类型。具体实现方法如下:
```python
import pandas as pd
from ast import literal_eval
# 构造示例数据
data = {'data': [1, 2, 3], 'str_dict': ["{'a': 1, 'b': 2}", "{'c': 3, 'd': 4}", "{'e': 5, 'f': 6}"]}
df = pd.DataFrame(data)
# 将字符串形式的字典转为列表
df['str_dict'] = df['str_dict'].apply(lambda x: list(literal_eval(x).values()))
print(df)
```
输出结果为:
```
data str_dict
0 1 [1, 2]
1 2 [3, 4]
2 3 [5, 6]
```
在上面的代码中,我们使用 apply 方法对 'str_dict' 列进行处理,将字符串形式的字典转为字典类型,再将字典类型转为列表类型,并覆盖原来的值。最终将处理后的 DataFrame 输出即可。需要注意的是,在将字符串转为字典类型时,使用了 ast 模块中的 literal_eval 函数,可以将字符串转为对应的 Python 对象,避免了使用 eval 函数带来的安全性问题。
阅读全文