如何将包含字典列表的JSON文件读入pandas数据框架?

9
我有一个JSON文件,里面有一个字典列表,长这样:

[{"url": "http://www.URL1.com", "date": "2001-01-01"}, 
 {"url": "http://www.URL2.com", "date": "2001-01-02"}, ...]

但我在将它导入到pandas数据框中遇到了困难,这本应该很容易,但我却想不起来了。有人能在这里帮助我吗?
同样,最简单的方法是将其读入字典列表以在Python中使用。
2个回答

12

你可以使用from_dict方法:

import pandas as pd

lis = [{"url": "http://www.URL1.com", "date": "2001-01-01"}, 
       {"url": "http://www.URL2.com", "date": "2001-01-02"}]

print pd.DataFrame.from_dict(lis)

         date                  url
0  2001-01-01  http://www.URL1.com
1  2001-01-02  http://www.URL2.com

或者您可以使用DataFrame构造函数:

import pandas as pd

lis = [{"url": "http://www.URL1.com", "date": "2001-01-01"}, {"url": "http://www.URL2.com", "date": "2001-01-02"}]

print pd.DataFrame(lis)

         date                  url
0  2001-01-01  http://www.URL1.com
1  2001-01-02  http://www.URL2.com

6

from_dict 可以在此处使用,但是推荐的方法是使用 pd.read_json 并带上 orient='records'。这将解析如下格式的输入:

类似列表形式 [{column -> value}, ... , {column -> value}]

示例: 假设以下是 lis.json 的文本:

[{"url": "http://www.URL1.com", "date": "2001-01-01"}, 
 {"url": "http://www.URL2.com", "date": "2001-01-02"}]

与@jezrael的答案不同,可以将文件路径本身作为输入而不是列表:

print(pd.read_json('lis.json', orient='records'))
        date                  url
0 2001-01-01  http://www.URL1.com
1 2001-01-02  http://www.URL2.com

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接