我有一个不寻常但一致的格式的长字符串,我想把它转换成一个熊猫数据框架。下面是重复的格式示例:
' {"Col A":"Val","Col B":10,"Col C":1},{"Col A":"Val","Col B":4,"Col C":0} '
所希望的数据框架如下:
Col A Col B Col C
"Val" 10 1
"Val" 4 0
我尝试过将字符串拆分为分隔符,但由于数据类型的变化,无法将每个分隔符转换为一行。
有更简单的方法吗?
发布于 2022-02-18 16:40:47
可以将字符串计算为字典,也可以将其解释为JSON。
评估不要使用eval
(危险),而是使用ast.literal_eval
s = ' {"Col A":"Val","Col B":10,"Col C":1},{"Col A":"Val","Col B":4,"Col C":0} '
from ast import literal_eval
import pandas as pd
df = pd.DataFrame(literal_eval(s.strip()))
对于JSON,直接使用pandas.read_json
:
s = ' {"Col A":"Val","Col B":10,"Col C":1},{"Col A":"Val","Col B":4,"Col C":0} '
import pandas as pd
df = pd.read_json(f'[{s}]')
输出:
Col A Col B Col C
0 Val 10 1
1 Val 4 0
发布于 2022-02-18 14:41:49
我能想象到的最简单的方法。
import json
import pandas as pd
txt = ' {"Col A":"Val","Col B":10,"Col C":1},{"Col A":"Val","Col B":4,"Col C":0} '
# simulate a list of dicts and parse it like a json file
data = json.loads(f'[{txt}]')
df = pd.DataFrame(data)
发布于 2022-02-18 15:13:12
eval()
也适用于这种情况:
pd.DataFrame(eval(txt))
Col A Col B Col C
0 Val 10 1
1 Val 4 0
https://stackoverflow.com/questions/71180596
复制相似问题