小编Jos*_*ega的帖子

使用 pandas 忽略来自 openpyxl 的 UserWarning

我有大量必须加载的 .xlsm 文件。每个 Excel 文件有 6 个工作表。因此,我使用 pandas 打开每个 Excel 文件:

for excel_file in files_list:
    with pd.ExcelFile(excel_file, engine = "openpyxl") as f:
        df1 = pd.read_excel(f, "Sheet1")
        df2 = pd.read_excel(f, "Sheet2")
        df3 = pd.read_excel(f, "Sheet3")
        ...
Run Code Online (Sandbox Code Playgroud)

每次迭代之后,我将 df 传递给其他函数并用它做一些事情。我习惯pd.ExcelFile将文件加载到内存中一次,然后将其分离到 DataFrame 上。

但是,执行此操作时,我收到以下警告:

/opt/anaconda3/lib/python3.8/site-packages/openpyxl/worksheet/_reader.py:300: UserWarning: Data Validation extension is not supported and will be removed
warn(msg)
Run Code Online (Sandbox Code Playgroud)

无论警告如何,信息都会从 Excel 文件中正确加载,并且不会丢失任何数据。将每个 Excel 文件及其所有工作表加载到 df 中大约需要 0.8 秒。如果我使用 pandas 上的默认引擎来加载每个 Excel 文件,警告就会消失,但每个文件所需的时间会增加到 5 甚至 6 秒。

我看到了这篇文章,但没有关于如何删除警告的答案,这正是我所需要的,因为一切正常。

我怎样才能禁用所述用户警告?

python excel pandas openpyxl

7
推荐指数
1
解决办法
2万
查看次数

Pandas:如果满足条件,则用前一行值替换列值

我有一个从 txt 文件导入的 DataFrame,其结构如下:

            ID   Place            Name        Other
0    123456789    1100           NAME1      5468.85
1      NUMBER1    1100    DESCRIPTION1     
2         STR1            DESCRIPTION2       
3      NUMBER2                            OTHER_STR
4    987654321    1100           NAME2      4566.65
1      NUMBER1    1100    DESCRIPTION1     
2         STR1            DESCRIPTION2     
Run Code Online (Sandbox Code Playgroud)

我想检查类似下面的代码,但我知道迭代 df 是一种不好的做法,而且我不是 Pandas 专家:

for row in df:
    if row['Other'] == '' or row['Place'] == '':
        row['ID'] == previous_row['ID']
Run Code Online (Sandbox Code Playgroud)

输出应如下所示:

            ID   Place            Name        Other
0    123456789    1100           NAME1      5468.85
1    123456789    1100    DESCRIPTION1     
2    123456789            DESCRIPTION2       
3    123456789                            OTHER_STR
4    987654321    1100           NAME2      4566.65 …
Run Code Online (Sandbox Code Playgroud)

python pandas

5
推荐指数
1
解决办法
2783
查看次数

标签 统计

pandas ×2

python ×2

excel ×1

openpyxl ×1