熊猫:将特定的Excel单元格值读入变量

时间:2017-04-21 13:51:16

标签: python excel pandas numpy

情况:

我正在使用pandas来解析工作簿中的单独Excel(.xlsx)工作表,其中包含以下设置:Python 3.6.0Anaconda 4.3.1上的Windows 7 x64. < / p>

问题:

我一直无法找到如何将变量设置为特定的Excel工作表单元格值,例如来自var = Sheet['A3'].value的{​​{1}}使用'Sheet2'

问题:

这可能吗?如果是这样,怎么样?

我尝试了什么:

我搜索了pandas以及各种论坛上的pandas文档但未找到答案。

我知道我可以使用dataframe解决这个问题(我可以指定一个单元格坐标),但我想:

  1. 使用openpyxl - 如果可能;
  2. 只读一次文件。
  3. 我已导入pandas以及numpy,因此能够写出:

    pandas

    xls = pd.ExcelFile(filenamewithpath) data = xls.parse('Sheet1') dateinfo2 = str(xls.parse('Sheet2', parse_cols = "A", skiprows = 2, nrows = 1, header = None)[0:1]).split('0\n0')[1].strip() 被读入'Sheet1'很好,因为我有一个收集我想要的范围的功能。

    我也尝试从单独的工作表('data')读取,单元格'sheet2'中的值,以及我目前的代码是笨重的。它根据需要将值作为字符串输出,但绝不是很漂亮。我只想要这个单元格值和尽可能少的附加工作表信息。

3 个答案:

答案 0 :(得分:3)

详细阐述@ FLab的评论使用了这些内容:

修改

更新了与更新问题相对应的答案,该问题询问如何一次阅读某些表格。 因此,通过向sheet_name=None提供read_excel(),您可以一次阅读所有工作表,并且pandas会返回dict个DataFrames,其中的键是Excel工作表名称。

import pandas as pd
In [10]:

df = pd.read_excel('Book1.xlsx', sheetname=None, header=None)
df
Out[11]:
{u'Sheet1':    0
 0  1
 1  1, u'Sheet2':     0
 0   1
 1   2
 2  10}
In [13]:
data = df["Sheet1"]
secondary_data = df["Sheet2"]
secondary_data.loc[2,0]
Out[13]:
10

或者,如this post中所述,如果您的Excel文件有多个工作表,则可以传递sheetname字符串列表,工作表名称以进行解析,例如。

df = pd.read_excel('Book1.xlsx', sheetname=["Sheet1", "Sheet2"], header=None)

致用户6241235以挖掘最后一个替代

答案 1 :(得分:2)

您可以使用具有skip_footer参数的pandas read_excel。 这应该有效,其中skipendrows是您要跳过的结束行数。

data = xls.read_excel(filename, 'Sheet2', parse_cols = "A", skipsrows = 2, skip_footer=skipendrows, header =None)

答案 2 :(得分:1)

默认情况下,使用Pandas读取Excel文件为数据框。您不需要整个表格,只需一个单元格。我这样做的方法是使该单元格成为标题,例如:

# Read Excel and select a single cell (and make it a header for a column)
data = pd.read_excel(filename, 'Sheet2', index_col=None, usecols = "C", header = 10, nrows=0)

将返回一个包含1个标头且没有数据的“列表”。然后隔离该标头:

# Extract a value from a list (list of headers)
data = data.columns.values[0]
print (data)