Pandas DataFrame - KeyError: 'date' - PullRequest
       4

Pandas DataFrame - KeyError: 'date'

0 голосов
/ 14 июля 2020

Для текущего проекта я работаю с большим Pandas DataFrame, полученным из файла JSON.

Как только вызываются объекты c файла JSON в пределах Pandas, Я получаю ключевые ошибки, такие как KeyError: 'date' для строки df['date'] = pd.to_datetime(df['date']).

Я уже исключил формулировку идентификатора / объекта как возможный источник ошибки. Есть ли какая-нибудь хитрость, чтобы заставить этот код работать?

Файл JSON имеет следующую структуру:

[
{"stock_symbol": "AMG", "date": "2013-01-01", "txt_main": "ABC"}
]

И соответствующий раздел кода выглядит так:

import string
import json
import pandas as pd

# Loading and normalising the input file
file = open("sp500.json", "r")
data = json.load(file)
df = pd.json_normalize(data)
df = pd.DataFrame().fillna("")

# Datetime conversion
df['date'] = pd.to_datetime(df['date'])

Ответы [ 3 ]

2 голосов
/ 14 июля 2020

Взгляните на примеры документации функции fillna функции fillna .

Выполняя df = pd.DataFrame().fillna(""), вы заменяете предыдущий df новым (пустым) фреймом данных. Вы можете просто применить это так: df = df.fillna("").

1 голос
/ 14 июля 2020

Вы используете df = pd.DataFrame().fillna(""), который создаст новый фрейм данных и заполнит его без значения.

Здесь старый df заменен пустым фреймом данных, поэтому нет столбца с именем date . Вместо этого вы можете использовать для заполнения значений 'na', используя df.fillna("").

import string
import json
import pandas as pd

# Loading and normalising the input file
file = open("sp500.json", "r")
data = json.load(file)
df = pd.json_normalize(data)
df = df.fillna("")

# Datetime conversion
df['date'] = pd.to_datetime(df['date'])

Спасибо

1 голос
/ 14 июля 2020
In [42]: import string
    ...: import json
    ...: import pandas as pd
    ...:
    ...: # Loading and normalising the input file
    ...: #file = open("sp500.json", "r")
    ...: #data = json.load(file)
    ...: df = pd.json_normalize(a)
    ...: #df = pd.DataFrame().fillna("")
    ...:
    ...: # Datetime conversion
    ...: df['date'] = pd.to_datetime(df['date'])

In [43]: df
Out[43]:
  stock_symbol       date txt_main
0          AMG 2013-01-01      ABC

df = pd.DataFrame().fillna("") создает новый пустой фрейм данных и заполняет «NaN» пустым.

Итак, измените эту строку на df = df.fillna("")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...