我正在读取JSON文件;它是这样的。
type features
0 FeatureCollection {'type': 'Feature', 'properties': {'GEO_ID': '...
1 FeatureCollection {'type': 'Feature', 'properties': {'GEO_ID': '...
2 FeatureCollection {'type': 'Feature', 'properties': {'GEO_ID': '...
3 FeatureCollection {'type': 'Feature', 'properties': {'GEO_ID': '...
4 FeatureCollection {'type': 'Feature', 'properties': {'GEO_ID': '...
我想弄清楚如何爆炸名为'features'的列,但我不能让它工作得很好。
我试了下面的代码,它什么也没做。
import pandas as pd
data = pd.read_json('C:\Users\ryans\Desktop\test.json')
print(type(data))
# not working
df = pd.json_normalize(data)
我也试过这个代码。
import pandas as pd
import json
from pandas.io.json import json_normalize
with open('C:\Users\ryans\Desktop\test.json') as data_file:
data = json.load(data_file)
print(data)
df = pd.DataFrame(data)
甚至在运行第二个代码示例之后,所有内容都被塞进名为"features"的字段中。如何将特性中的所有数据分解到单独的列中,并将所有数据都放入标准化的数据框架中?
如果没有访问更多的数据进行测试,我认为您需要使用.json_normalize
和然后在结果上使用pd.concat
,像这样:
import pandas as pd
import json
with open('C:\Users\ryans\Desktop\test.json') as data_file:
data = json.load(data_file)
df_features = pd.json_normalize(data, 'features')
df = pd.concat([pd.DataFrame(data.drop('features', axis=1)), df_features], axis=1)
df_properties = pd.json_normalize(df['properties'])
df = pd.concat([df.drop('properties', axis=1), df_properties], axis=1)