我有一个包含合并的列和行的 Excel 文件,我想读取该 Excel 文件并解析它以将其转换为 DataFrame。
这只是所发生情况的一个小示例,因为我拥有的真实数据非常多很大,有很多桌子。 这就是 Excel 文件的样子:
当我尝试时
xl = pd.read_excel('file')
我得到了这个:
如您所见,合并的行给了我 NaN,合并的列给了我“未命名:”。
当我尝试解析函数(我用它来代替 read_excel)
df=[]
xls = pd.ExcelFile('/content/test.xlsx')
entire_sheet = xls.parse(sheet_name='Feuille 1')
df.append(entire_sheet)
我得到这个:
所以 NaN 行和未命名列有同样的问题。
我希望 Python 中的 DF 看起来与 Excel 工作表完全一样 我应该怎么办?
可以使用
pandas
中的
read_excel
函数和
header
和
index_col
参数来读取 Excel 文件并将合并的单元格处理为标题。然后,可以使用
fillna(method='ffill')
来填充合并单元格中的缺失值。
以下是使用提供的示例的代码:
import pandas as pd
# 读取 Excel 文件,将第一行和第一列作为标题
df = pd.read_excel('file.xlsx', header=[0, 1], index_col=[0, 1])
# 使用前向填充填充缺失值
df = df.fillna(method='ffill')
print(df)
这将生成以下 DataFrame:
Unnamed: 0_level_1 Valeur 1
Param 1 Param 2 Param 3
groupe A date
2020-01-01 00:00:00 1 4 7
2020-01-02 00:00:00 2 5 8
2020-01-03 00:00:00 3 6 9
groupe B date
2020-01-01 00:00:00 10 13 16
2020-01-02 00:00:00 11 14 17
2020-01-03 00:00:00 12 15 18
在这个代码中:
-
header=[0, 1]
将第一行和第二行作为多索引列标题读取。 -
index_col=[0, 1]
将第一列和第二列作为多索引行标题读取。 -
fillna(method='ffill')
使用前一个值填充每个列中的缺失值,从而有效地将合并单元格的值向下传播。
这应该可以创建一个与的 Excel 工作表结构相匹配的 DataFrame。可以根据数据的特定结构调整
header
、
index_col
和
fillna
参数。