输入:我的Excel文件包含3列,excel文件格式如下:
h,l
我希望以下格式从上面输入字典: 输出:
A C D
A C E
A F G
B H J
B H K
A F I
B L M
B L N
A F O
逻辑:对于每个不同的column-1值,需要制作嵌套字典&在该嵌套部分中,对于每个不同的column-2值,需要列出相应的column-3值。
答案 0 :(得分:2)
你可以用pandas这样做:
import pandas as pd
df = pd.read_excel('excel_file', header=None)
d = {}
for b in df.groupby([0,1])[2].apply(list).to_frame().iterrows():
if b[0][0] not in d:
d[b[0][0]] = {b[0][1]: b[1].tolist()[0]}
else:
d[b[0][0]][b[0][1]] = b[1].tolist()[0]
print d
输出:
{'A': {'C': ['D', 'E'], 'F': ['G', 'I', 'O']}, 'B': {'H': ['J', 'K'], 'L': ['M', 'N']}}
答案 1 :(得分:1)
@Edchum
@MYGz
谢谢!!但是,如果不使用熊猫,我最终会做这样的事情。
from xlrd import open_workbook
from nested_dict import nested_dict
book = open_workbook(input_file_location) # location of excel file
sheet_3=book.sheets()[2] #sheet_3 in which i have data
data_sheet_3 = [sheet_3.row_values(i) for i in xrange(sheet_3.nrows)] # getting data of sheet-3
# specifying 2-level of nesting
#format of dictionary: {'Key1':{'Key2':['Value1','value2']},'Key3':{'Key4':['Value3','value4']}}
dictionary=nested_dict(2,list)
for row_no in xrange(sheet_3.nrows):
col_1=data_sheet_3[row_no][0]
col_2=data_sheet_3[row_no][1]
col_3=data_sheet_3[row_no][2]
dictionary[col_1][col_2].append(col_3)
print dictionary
如果您发现在python中预先定义嵌套字典结构的更好或替代方法,请与示例共享。