熊猫:将特定的Excel单元格值读取到变量中

QHa*_*arr 5 python excel numpy pandas

情况:

我使用pandas在单独的Excel(解析.xlsx)从与下面的设置工作簿片:Python 3.6.0Anaconda 4.3.1Windows 7 x64.

问题:

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

题:

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

我试过的

我已经pandasdataframe各种论坛上搜索了文档,但没有找到答案。

我知道我可以使用openpyxl(可以在其中指定单元格坐标)解决此问题,但是我想要:

  1. pandas如果可能,使用-
  2. 只读一次文件。

我已经导入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()
Run Code Online (Sandbox Code Playgroud)

'Sheet1'被读入'data'很好,因为我有一个功能来收集我想要的范围。

我还尝试从单独的工作表('sheet2')中读取,cell中的值"A3"以及我目前拥有的代码很笨拙。根据需要,它以字符串的形式获取值,但绝不是很漂亮。我只希望此单元格值和尽可能少的其他工作表信息。

Art*_*and 8

使用 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)
Run Code Online (Sandbox Code Playgroud)

将返回 1 个标题的“列表”并且没有数据。然后隔离该标题:

# Extract a value from a list (list of headers)
data = data.columns.values[0]
print (data)
Run Code Online (Sandbox Code Playgroud)


Yan*_* P. 5

详细说明@FLab的注释时,请遵循以下原则:

编辑:

更新了答案,以对应于更新的问题,该问题要求立即阅读一些表格。因此,通过提供sheet_name=Noneread_excel()您,您可以一次读取所有工作表,而pandas返回一个dictDataFrames,其中的键是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
Run Code Online (Sandbox Code Playgroud)

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

df = pd.read_excel('Book1.xlsx', sheetname=["Sheet1", "Sheet2"], header=None)
Run Code Online (Sandbox Code Playgroud)

归功于user6241235,以挖掘出最后的选择