对于当前的项目,我正在使用一个来自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'])
答案 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'])
谢谢