【发布时间】:2017-09-23 19:13:59
【问题描述】:
我正在尝试解析一个非常简单的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')
问题:
- 一切都是unicode,因此有一个“u”前缀,这在与其他字符串比较和在字典中设置值时会出现问题。我就是无法摆脱它。
- 我希望字典只接受非 Nan 值
-
有没有一种漂亮的方法可以在没有计数器的情况下使用“sheet”作为工作表的名称?即:
counter=0 for sheets in xls.sheet_names cur_sheet=xls.parse(xls.sheet_names[counter])
我觉得真的很丑……
- 理想情况下,我只想要一个字典(所有工作表的第一列都相同)
我对 Python 还是很陌生,而且它对我来说真的很不直观。我在网上搜索了一整天,并没有真正找到正常的解决方法。
谢谢!
【问题讨论】:
-
ps。我希望左列成为字典的“键”(由所有 sheetS 共享)
-
真的,您的问题应该一次只关注一件事。第 (3) 点与您的问题并没有真正的关联,并且是唯一一个我有信心回答并让开的问题。摆脱
counter,直接使用sheets,虽然我建议将其重命名为sheet,因为它是单数的,有助于理解。所以,for sheet in xls.sheet_names: cur_sheet = xls.parse(sheet). -
点了,我会做的。关于反击问题。您的建议(也是我的第一个猜测)适用于 xls.parse,但不适用于 cur_sheet.set_index(sheet)。部分原因是(我的猜测)这张纸被读作 u'Bla' 而不仅仅是 'Bla' 所以它找不到它
标签: python excel pandas parsing dictionary