如何阻止NAN出现在DataFrame中

时间:2019-04-27 22:36:08

标签: python json pandas dataframe

我正在使用API​​提取json文件/ python字典。当我尝试将其带入熊猫数据框时,我遇到了问题

我正在使用python请求库通过嵌套在requests.get().text方法中的json.loads()从地址获取字典。

我尝试了以下方法:

#Request_data
jsonfile = json.loads(requests.get(address).text)

方法1

df=json_normalize(jsonfile,record_path='history',meta['open','close','high','low','volume'],errors='ignore')

方法2

df=json_normalize(jsonfile,meta['open','close','high','low','volume'],errors='ignore')

当我尝试method1时,我得到一个表,其中的日期在列中,并以开,关,高,低和成交量作为列标题,但是单元格中的值为NaN

当我尝试method2时,我得到一行和很多列,每个日期都有一个打开,关闭,高,低和成交量列。

2 个答案:

答案 0 :(得分:0)

要理解您的数据并不容易,但是我建议您可以通过迭代json数据来创建每一列。您可以在for循环中检查NaN的来源。

例如:

df = pd.DataFrame()
col_1, col_2 = [], []

for element in jsonfile:
    col_1.append(element['col_1'])
    col_2.append(element['col_2'])

df['col_1'] = col_1
df['col_2'] = col_2

希望这可以为您提供帮助。

答案 1 :(得分:0)

@thisray感谢您抽出宝贵的时间回答。感激。我想出了这个答案,它可以解决问题,让我知道您的想法。

jsonfile = requests.get(URL)
fin_dict = jsonfile.json()
fin_history_dict = fin_dict['history']
historic_data = list(fin_history_dict.values())
df=pd.DataFrame(data = historic_data,index=fin_dict['history'])