python - 如何将给定的 Excel 文件转换为 Python 中的字典?

标签 python excel pandas dictionary

Excel数据格式:
enter image description here
该文件翻译为 csv,内容如下:

{'Details': {0: 'Mickey',
  1: nan,
  2: nan,
  3: nan,
  4: 'Doland',
  5: nan,
  6: nan,
  7: nan},
 'Unnamed: 1': {0: 'Mouse',
  1: nan,
  2: nan,
  3: nan,
  4: nan,
  5: nan,
  6: nan,
  7: nan},
 'Unnamed: 2': {0: 'Address1',
  1: 'city',
  2: 'street',
  3: 'hno',
  4: 'adress1',
  5: 'city',
  6: 'street',
  7: 'hno'},
 'Unnamed: 3': {0: nan, 1: 'xxx', 2: 2, 3: 22, 4: nan, 5: 'zzz', 6: 3, 7: 33},
 'Unnamed: 4': {0: 'address2',
  1: 'city',
  2: 'street',
  3: 'hno',
  4: 'address2',
  5: 'city',
  6: 'street',
  7: 'hno'},
 'Unnamed: 5': {0: nan, 1: 'yyy', 2: 3, 3: 33, 4: nan, 5: 'www', 6: 4, 7: 44}}
如何将附加的 Excel 转换为 Python 中的字典?
预期的字典:
dict1 ={'Details':[['Mickey','Mouse',{'Address1': {'city': 'xxx', 'Street': '2', 'hno': '22'}},
                    {'Address2': {'city': 'yyy', 'Street': '3', 'hno': '33'}}],
                   ['Doland','Duck',{'Address1': {'city': 'xxx', 'Street': '2', 'hno': '22'}},
                    {'Address2': {'city': 'yyy', 'Street': '3', 'hno': '33'}}]]}

最佳答案

这是我能想到的最糟糕的解决方案:

df = pd.read_excel('samp.xlsx', header=[0], 
                   index_col=[0,1])
d = {'details': []}
for i, grp in df.groupby('Details'):
    grp = (grp.T.ffill().T)
    grp.columns = grp.iloc[0]
    grp = grp[1:].T
    name = ', '.join(grp.index.name)
    val = grp.groupby(grp.index).apply(lambda x: dict(zip(x.iloc[0], x.iloc[1]))).to_dict()
    final_val = ([name,val])
    d['details'].append(final_val)

d:
{'details': [['Donald, Duck',
   {'Address1': {'City': 'zzz', 'Street': 3, 'hno': 33},
    'Address2': {'City': 'www', 'Street': 4, 'hno': 44}}],
  ['Mickey, Mouse',
   {'Address1': {'City': 'xxx', 'Street': 2, 'hno': 22},
    'Address2': {'City': 'yyy', 'Street': 3, 'hno': 33}}]]}
我已经在评论部分发布了excel文件的链接。
基本上,我为每个按名称访问每个组(米老鼠和唐老鸭)使用 z 循环,然后我对其应用操作。
对不起,我很着急,稍后会添加解释。如果您在理解事物方面有困难,请告诉我。
这个月牙:
grp.T.ffill().T 
将帮助我用 Address1/Address2 填充 nan 值。这就是为什么我转置它然后使用 ffill .
enter image description here
之后,我想将每个组的起始行作为列。
一旦这一步完成。我的第一行将是关键,第二行将是我的值(value)。所以我将它们压缩在一起并创建了一本字典。希望这可以帮助您更好地理解逻辑。

关于python - 如何将给定的 Excel 文件转换为 Python 中的字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66962158/

相关文章:

python - 调用对象的状态特定代码块的最有效方法是什么?

python - 为什么字符串乘法的字节码不同?

java - 分层数据的 Excel 布局

python - r 网状 : rename duplicates from converted Python pandas dataframe

python - 如何向 pandas 数据透视表添加新索引?

python - python numpy数组操作+=线程安全吗?

python - 在 PDF 文档中查找可输入表单字段的字段名称?

VBA IsNumeric 变得狂野

python - 更改 xlsxwriter 中 add_table 工作表编写器的数字格式

python - Pandas数据透视表,如何在values属性中放置一系列列