2016-01-22 331 views
1

这可能很愚蠢,但我需要从python中的excel中导入一些数据,其中数据打印在工作表中的某处(不是从A1位置开始)。从excel中读取数据并忽略python中的空行

... ... ... ... ... ... ... ... ... ... ... ... 
... ... ... ... ... ... ... ... ... ... ... 
... ... ... ... ... Timestamp a b c d 
... ... ... ... ... 20/01/2016 4.3 3.2 0.3 1.3 
... ... ... ... ... 19/01/2016 2.2 3.4 5.5 7.2 
... ... ... ... ... 18/01/2016 4.4 2.3 3.4 5.01 

我的唯一信息是其中Timestamp位于数据开始(可以在excel表在任何地方)。它以我在这里介绍的格式显示。 我使用了两种不同的方法。从xlrd我已经实现下面的代码

items = [] 
for row in range(d_sheet.nrows): 
    for col in range(d_sheet.nrows): 
     items.append(d_sheet.cell(row,col)) 
return items 

,并使用熊猫

data = pd.read_excel('file.xlsx') 
data.as_matrix() 

在这两种情况下,我结束了与许多空行与NaN值。 我想一个简单的解决方案是运行该文件并找到Timestamp元素并从该位置打印到我的文件中。但我想知道是否有其他解决方案可以自动识别在Excel表单中打印数据的位置。

p.s.理想情况下,我想以DataFrame或字典格式存储数据,以便在代码中使用索引和列信息。

+0

如果DataFrame中有很多NaN数据,可以使用'df.dropna()',如下所示:http://pandas.pydata.org/pandas-docs/version/0.17.1/generated/pandas。 DataFrame.dropna.html –

+0

这可能是一个解决方案,但它会放弃应该出现在我的数据内的所有'NaN'值,对吧?我的意思是如果我的数据中有一些'NaN'值(如此重要的信息)。 – Hamed

回答

1

在这两种情况下,我都会得到许多带有NaN值的空白行。我猜 一个简单的解决方案是运行该文件并找到时间戳 元素并从该位置打印到我的文件中。但是我想知道 是否有任何其他解决方案可以自动识别在Excel表格中打印数据的位置 。

**一个简单的办法就是在文件中运行,并找到时间戳**

有没有别的出路。如果你没有一个固定的元素时间戳开始位置,你需要遍历整个文件并找到元素,即使你有一个解决方案,比如 - 从我的xls中删除所有的NaN数据 - 在后面,这将会也在整个文件中运行。

+0

谢谢Victor,但是如果'NaN'是我数据中的一个值呢?这样我会忽略这个值并且确实改变了数据的结构。我只需要提取矩阵的任何值(在我的数据中也可以有'NaN')。 – Hamed

+0

对不起,我只是混淆了你的问题。我要编辑。 –

+0

谢谢维克多。我希望看到一些来自Pandas或其他库的工具来导入数据。但我想,我需要手动完成。干杯。 – Hamed