将xlsx文件解析为字典

时间:2017-04-26 11:44:26

标签: python excel pandas parsing dictionary

我试图解析一个非常简单的xlsx文件。它有以下格式的4张:lookup table。我为此使用了熊猫。

这是我想做的事情:

xls = pandas.ExcelFile('file.xlsx')
for sheet in xls.sheet_names:
    cur_sheet=xls.parse(sheet)
    cur_sheet=set_index(sheet)
    dic = cur_sheet.to_dict('index')

问题:

  1. 一切都是unicode,因此有一个" u"在与字典中的其他字符串和设置值进行比较时,这将是有问题的。我无法摆脱它。
  2. 我希望字典只采用非Nan值
  3. 有一种很好的方式可以使用" sheet"作为没有一些柜台的工作表的名称?即:

    counter=0
    for sheets in xls.sheet_names
         cur_sheet=xls.parse(xls.sheet_names[counter])
    
  4. 我觉得这真是太丑了......

    1. 理想情况下,我只想要一个字典(第一列对所有工作表都相同)
    2. 我对Python很陌生,它对我来说真的不直观。我整天都在网上搜索,无法找到正常的解决方法。

      谢谢!

1 个答案:

答案 0 :(得分:0)

让我们一一去。 我重新创建了 .xlsx 文件,如图所示,并添加了如何将文件读入pandas数据帧的更改。 1.您可以通过以下方式使用applymap

import pandas as pd
pd.set_option('expand_frame_repr', False)
dataframe = pd.read_excel('file.xlsx', sheetname = name, header = 0, index_col = 0) 
dataframe.applymap(lambda x: x.strip('u'))

它适用于获取' u'在数据帧的每个单元格中,

2. dropna()摆脱了NaN值。

3.这就是你用pythonic方式循环的方式

xls = pd.ExcelFile('file.xlsx')
sheets = xls.sheet_names

for sheet in sheets:
     #your code

让我们将它们结合在一起:

import pandas as pd
xls = pd.ExcelFile('file.xlsx')
sheets = xls.sheet_names
for sheet in sheets:
    dataframe = pd.read_excel('file.xlsx', sheetname = sheet)
    dataframe = dataframe.dropna()
    dataframe.applymap(lambda x: x.strip('u'))

4.我真的没有问题,所以我无法提供帮助。

根据评论中的对话..

import pandas as pd
df = pd.read_excel('file.xlsx', sheetname = name, header = 0, index_col = 0)
cols = df.columns
the_list = list()
for col in cols:
    print(df[~df[col].isnull()].index.tolist())
    column = (col, df[~df[col].isnull()].index.tolist())
    the_list.append(column)

此代码打开您的文件,然后遍历列并为包含列ID和行ID列表的每列创建一个元组。因此,如果在列2_3和行3_0中有x,则元组将如下所示:('2_3', ['3_0'])。这是你真正想做的吗?