如何在数据框中转换具有特殊格式的列

我的列json具有以下格式:

"{'id': '7','time': 1572741353685,'number': '003477'}"
"{'id': '7','number': '003477'}"

我想在熊猫数据框中转换

id               time           number
7          1572741353685        003477
7          1572741353685        003477
7          1572741353685        003477
7          1572741353685        003477

我为此使用循环,但我想不使用循环。 谢谢

chongqingwangjing 回答:如何在数据框中转换具有特殊格式的列

看起来像您需要的。

import ast


data = ["{'id': '7','time': 1572741353685,'number': '003477'}","{'id': '7','number': '003477'}"]
df = pd.DataFrame(data,columns=['A'])
df_result = pd.DataFrame(df["A"].apply(ast.literal_eval).tolist())
print(df_result)

输出:

  id           time  number
0  7  1572741353685  003477
1  7  1572741353685  003477
2  7  1572741353685  003477
3  7  1572741353685  003477
,

在您的情况下,下一个类似的方法应该起作用:

json_rows = [
...
]
df = pd.DataFrame.from_records([
    json.loads(row) for row in json_rows
])

当然,它在JSON解析阶段仍然存在循环...

UPD。而且它不是JSON-它是python对象的另一种表示形式,因此您应该像其他答案一样用ast代替json.loads

,

使用列表推导,将值转换为ast.literal_eval到字典:

import ast

df = pd.DataFrame([ast.literal_eval(x) for x in df["col"]])
print(df)

  id           time  number
0  7  1572741353685  003477
1  7  1572741353685  003477
2  7  1572741353685  003477
3  7  1572741353685  003477
本文链接:https://www.f2er.com/3152703.html

大家都在问