获取按索引定位的嵌套字典中的键和值的列表
我有一个像这样的结构的Excel文件:
name age status anna 35 single petr 27 married
我已经把这样的文件转换成一个嵌套的字典,像这样的结构:
{'anna': {'age':35}, {'status': 'single'}}, {'petr': {'age':27}, {'status': 'married'}}
使用pandas:
import pandas as pd df = pd.read_excel('path/to/file') df.set_index('name', inplace=True) print(df.to_dict(orient='index'))
但是现在当运行list(df.keys())
它会返回字典中所有键(“年龄”,“状态”等)的列表,但不包含“名称”。
我最终的目标是通过input一个名字来返回所有的键和值。
有没有可能? 或者,也许我应该使用其他方式导入数据,以实现目标? 最后我应该来找一本字典,因为我会用一把钥匙把它和其他字典合并起来。
我认为你需要参数drop=False
set_index
为不丢弃列Name
:
import pandas as pd df = pd.read_excel('path/to/file') df.set_index('name', inplace=True, drop=False) print (df) name age status name anna anna 35 single petr petr 27 married d = df.to_dict(orient='index') print (d) {'anna': {'age': 35, 'status': 'single', 'name': 'anna'}, 'petr': {'age': 27, 'status': 'married', 'name': 'petr'}} print (list(df.keys())) ['name', 'age', 'status']
给定一个来自excel的数据框,你应该这样做来获得你想要的东西:
resulting_dict = {} for name, info in df.groupby('name').apply(lambda x: x.to_dict()).iteritems(): stats = {} for key, values in info.items(): if key != 'name': value = list(values.values())[0] stats[key] = value resulting_dict[name] = stats
尝试这个 :
import pandas as pd df = pd.read_excel('path/to/file') df[df['name']=='anna'] #Get all details of anna df[df['name']=='petr'] #Get all details of petr