熊猫DataFrame-KeyError:“日期”

时间:2020-07-14 06:21:57

标签: python json pandas dataframe

对于当前的项目,我正在使用一个来自JSON文件的大型Pandas DataFrame。

一旦在Pandas中调用JSON文件的特定对象,我就会得到关键错误,例如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 个答案:

答案 0 :(得分:2)

看看fillna函数fillna function的文档示例。

通过执行df = pd.DataFrame().fillna(""),您将使用新的(空)数据框覆盖以前的df。您可以通过以下方式进行应用:df = df.fillna("")

答案 1 :(得分:1)

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("")

答案 2 :(得分:1)

您正在使用df = pd.DataFrame().fillna(""),这将创建一个新的数据框并填充无值。

在这里,旧的df被空的数据框取代,因此没有名为 date 的列。相反,您可以使用df.fillna("")来填充“ na”值。

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'])

谢谢