你需要通过
.apply(literal_eval)
或
.apply(json.loads)
将
type
为
str
的列转换为
dict
,然后使用
DataFrame.from_records
函数:
import pandas as pd
from ast import literal_eval
response = {u'"57e01311817bc367c030b390"': u'{"ad_since": 2016, "indoor_swimming_pool": "No", "seaside": "No", "handicapped_access": "Yes"}',
u'"57e01311817bc367c030b3a8"': u'{"ad_since": 2012, "indoor_swimming_pool": "No", "seaside": "No", "handicapped_access": "Yes"}'}
df = pd.DataFrame.from_dict(response, orient='index')
print (type(df.iloc[0,0]))
<class 'str'>
df.iloc[:,0] = df.iloc[:,0].apply(literal_eval)
print (pd.DataFrame.from_records(df.iloc[:,0].values.tolist(), index=df.index))
ad_since handicapped_access indoor_swimming_pool \
"57e01311817bc367c030b3a8" 2012 Yes No
"57e01311817bc367c030b390" 2016 Yes No
seaside
"57e01311817bc367c030b3a8" No
"57e01311817bc367c030b390" No
import pandas as pd
import json
response = {u'"57e01311817bc367c030b390"': u'{"ad_since": 2016, "indoor_swimming_pool": "No", "seaside": "No", "handicapped_access": "Yes"}',
u'"57e01311817bc367c030b3a8"': u'{"ad_since": 2012, "indoor_swimming_pool": "No", "seaside": "No", "handicapped_access": "Yes"}'}
df = pd.DataFrame.from_dict(response, orient='index')
df.iloc[:,0] = df.iloc[:,0].apply(json.loads)
print (pd.DataFrame.from_records(df.iloc[:,0].values.tolist(), index=df.index))
ad_since handicapped_access indoor_swimming_pool \
"57e01311817bc367c030b3a8" 2012 Yes No
"57e01311817bc367c030b390" 2016 Yes No
seaside
"57e01311817bc367c030b3a8" No
"57e01311817bc367c030b390" No
pd.DataFrame(response.items())
来测试你的样本数据?对我来说它不起作用。 - jezraelTypeError: Expected String or Unicode
。 - mitsi