как преобразовать столбец с особым форматом в dataframe - PullRequest
1 голос
/ 06 ноября 2019

У меня есть столбец JSON в этом формате:

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

Я хочу преобразовать это в pandas dataframe

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

Я использую цикл для этого, но я хочу сделатьэто без петли. спасибо

Ответы [ 3 ]

1 голос
/ 06 ноября 2019

Что-то вроде следующего должно работать в вашем случае:

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

Конечно, на этапе синтаксического анализа JSON все еще есть циклы ...

UPD. И это не JSON - это другое представление объекта python, поэтому вы должны заменить json.loads на ast, как в других ответах.

1 голос
/ 06 ноября 2019

Использовать понимание списка с преобразованием значений в диктанты на 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
1 голос
/ 06 ноября 2019

Похоже, вам нужно.

import ast


data = ["{'id': '7', 'time': 1572741353685, 'number': '003477'}","{'id': '7', 'time': 1572741353685, 'number': '003477'}","{'id': '7', 'time': 1572741353685, 'number': '003477'}","{'id': '7', 'time': 1572741353685, '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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...