gpt4 book ai didi

python - Pandas 读取 Excel : how to access a given cell by column and row numbers

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:09 24 4
gpt4 key购买 nike

使用 Pandas 模块和 read_excel 函数,我可以为我从 excel 文件中读取的每一列分配一个数字作为列标题,而不是使用 g_int_c=str(df1['Unnamed: 1' ][6]) 来引用 excel 文件中的一段数据,我可以使用 g_int_c=str(df1[1][6])?

示例代码如下:

import pandas as pd

with pd.ExcelFile(inputFile,
sheetname=['pnl1 Data ','pnl2 Data','pnl3 Data','pnl4 Data']) as xlsx:
df1 = pd.read_excel(xlsx, 'pnl1 Data ',skiprows=9, parse_cols="B:H", keep_default_na='FALSE', na_values=['NULL'])#assign column headers
df2 = pd.read_excel(xlsx, 'pnl2 Data', skiprows=9, parse_cols="B:H", keep_default_na='FALSE', na_values=['NULL'])
df3 = pd.read_excel(xlsx, 'pnl3 Data', skiprows=9, parse_cols="B:H", keep_default_na='FALSE', na_values=['NULL'])
df4 = pd.read_excel(xlsx, 'pnl4 Data', skiprows=9, parse_cols="B:H", keep_default_na='FALSE', na_values=['NULL'])

最佳答案

要获得漂亮的列名而不是像 'Unnamed: 1' 这样的默认值,请使用 pd.read_excelnames 参数。比照,尝试替换

with pd.ExcelFile(inputFile,
sheetname=['pnl1 Data ','pnl2 Data','pnl3 Data','pnl4 Data']) as xlsx:
df1 = pd.read_excel(xlsx, 'pnl1 Data ',skiprows=9, parse_cols="B:H", keep_default_na='FALSE', na_values=['NULL'])#assign column headers
df2 = pd.read_excel(xlsx, 'pnl2 Data', skiprows=9, parse_cols="B:H", keep_default_na='FALSE', na_values=['NULL'])
df3 = pd.read_excel(xlsx, 'pnl3 Data', skiprows=9, parse_cols="B:H", keep_default_na='FALSE', na_values=['NULL'])
df4 = pd.read_excel(xlsx, 'pnl4 Data', skiprows=9, parse_cols="B:H", keep_default_na='FALSE', na_values=['NULL'])

sheets = ['pnl1 Data','pnl2 Data','pnl3 Data','pnl4 Data']
df = pd.read_excel(inputFile, sheetname=sheets, skiprows=9, parse_cols="B:H",
names=list('BCDEFG'))
df = {i: df[sheet] for i, sheet in enumerate(sheets, 1)}

这将使 df 成为一个字典,其键是工作表编号,其值是数据框。 DataFrames 的列名称为 BG,大致类似于原始 Excel 文件。

因此,不是引用编号变量 df1, ..., df4(通常是 a bad idea ),您将拥有字典中的所有数据帧df 并将能够通过数字索引访问它们:df[1], ..., df[4]。例如,工作表 pnl3 Data 将作为 df[3] 访问。

要访问第七行,您可以使用 'pnl1 Data' 工作表的 B 列值:

g_int_c = str(df[1].loc[6, 'B'])

例如,

import pandas as pd
try: from cStringIO import StringIO # for Python2
except ImportError: from io import StringIO # for Python3
import textwrap
df1 = pd.read_csv(StringIO(textwrap.dedent("""
,,,
0,1,2,3
1,4,5,6
7,8,9,10""")))
df2 = pd.read_csv(StringIO(textwrap.dedent("""
,,,
0,NULL,2,3
1,4,NULL,NULL""")), converters={i:str for i in range(4)})

sheets = ['pnl1 Data','pnl2 Data']

writer = pd.ExcelWriter('/tmp/output.xlsx')
for df, sheet in zip([df1, df2], sheets):
print(df)
# Unnamed: 0 Unnamed: 1 Unnamed: 2 Unnamed: 3
# 0 0 NULL 2 3
# 1 1 4 NULL NULL
df.to_excel(writer, sheet)
writer.save()

df = pd.read_excel('/tmp/output.xlsx', sheetname=sheets, names=list('ABCD'), parse_cols="A:E")
df = {i: df[sheet] for i, sheet in enumerate(sheets, 1)}

for key, dfi in df.items():
print(dfi)
# A B C D
# 0 0 1 2 3
# 1 1 4 5 6
# 2 7 8 9 10
# A B C D
# 0 0 NaN 2.0 3.0
# 1 1 4.0 NaN NaN

print(df[1].loc[1, 'B'])
# 4

关于python - Pandas 读取 Excel : how to access a given cell by column and row numbers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37236743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com