获取由索引

时间:2017-08-15 14:14:42

标签: python excel pandas dictionary

我有一个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())时,它会返回字典中所有键的列表('age','status'等),但不会返回'name'。

我的最终目标是通过输入名称返回所有键和值。

有可能吗?或者我可能会使用其他方式导入数据以实现目标?最后我应该来一本字典,因为我会用一把钥匙把它与其他词典合并。

3 个答案:

答案 0 :(得分:1)

鉴于来自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

答案 1 :(得分:1)

我认为您需要参数drop=Falseset_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']

答案 2 :(得分:0)

试试这个:

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