【发布时间】:2016-03-15 01:58:17
【问题描述】:
我有一个包含多个表的 .csv 文件。
使用 Pandas,从这个文件中获取两个 DataFrame inventory 和 HPBladeSystemRack 的最佳策略是什么?
输入 .csv 如下所示:
Inventory
System Name IP Address System Status
dg-enc05 Normal
dg-enc05_vc_domain Unknown
dg-enc05-oa1 172.20.0.213 Normal
HP BladeSystem Rack
System Name Rack Name Enclosure Name
dg-enc05 BU40
dg-enc05-oa1 BU40 dg-enc05
dg-enc05-oa2 BU40 dg-enc05
到目前为止,我想出的最好方法是将这个 .csv 文件转换为 Excel 工作簿 (xlxs),将表格拆分为工作表并使用:
inventory = read_excel('path_to_file.csv', 'sheet1', skiprow=1)
HPBladeSystemRack = read_excel('path_to_file.csv', 'sheet2', skiprow=2)
但是:
- 这种方法需要
xlrd模块。 - 必须实时分析这些日志文件,因此最好找到一种方法来分析它们,因为它们来自日志。
- 真正的日志比这两个表多得多。
【问题讨论】:
-
表格的行数是否固定?
-
是的,但是每个表的这个数字是不同的。而且我想避免按行号选择的方法,因为下一个日志文件可能有更多行...
-
两个表之间是否有空行?一些坚实的东西,总是:)
-
您可以在 pd.read_csv() 中使用 'nrows' 和 'skiprows' 的组合来抓取特定的表。您必须知道每个表从哪一行开始以及每个表中有多少行。
-
@WoodChopper 是的,每张桌子之间有一个空行。
标签: python excel python-2.7 csv pandas