我对pandas / python很陌生,目前无法进行此解析。 解析具有嵌套列表和字典的数据框
DF:
a b c d e f
0 1 2 {'county': 3 4 [{'name': 'essex,england','locality': None,'region':'harlow','subregion':None}]
'cleveland',
'country':
'england'}
1 4 5 {'county': 6 7 [{'name': 'hampsire,england','locality': None,'region':'alton','subregion':None}]
'hamphsire',
'country':
'england'}
输出应为:
a b county country d e name locality region subregion
0 1 2 cleveland england 3 4 essex,england None harlow None
1 4 5 hamphsire england 6 7 hampsire,england None alton None
我尝试过的/已知的: 如果仅存在一行并且成功了,我就解析了df,但是两行我做不到。 我如何解析单行:创建一个函数并展开它,然后合并到df
如果需要,请指定原始命令:
F列:
[{'name': 'essex, england',
'locality': None,
'region': 'harlow',
'subregion': None,
c列
'location': {0: {'county': 'cleveland',
'country': 'england'}
答案 0 :(得分:0)
我不确定我是否理解您的意思,但df.from_dict()应该可以解决您的问题。
您可以在此处找到文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.from_dict.html
尝试类似的东西:
data = {dict with the data}
keys = [list with the name of the columns]
my_english_dataframe = pd.DataFrame.from_dict(data, orient='index', columns=keys)
熊猫可以执行一些非常强大的操作,您只需要习惯它的工作原理即可。
答案 1 :(得分:0)
遵循您的逻辑:
import pandas as pd
df = pd.DataFrame({'a':[1,4],
'b':[2,5],
'c':[{'county':'cleveland','country':'england'},
{'county':'hamphsire','country':'england'}],
'd':[3,6],
'e':[4,7],
'f':[{'name': 'essex,england','locality':
None,'region':'harlow','subregion':None},
{'name': 'hampsire,england','locality':
None,'region':'alton','subregion':None}]})
df1 = df['c'].apply(pd.Series)
df2 = df['f'].apply(pd.Series)
result = pd.concat([df.filter(['a', 'b']), df1,df.filter(['d', 'e']), df2] , axis= 1)
print(result)
输出:
a b county country d e name locality region subregion
0 1 2 cleveland england 3 4 essex,england None harlow None
1 4 5 hamphsire england 6 7 hampsire,england None alton None