如果apply方法失败,如何在DataFrame中保存计算值?

2024-10-04 05:20:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个将值写入excel文件的方法。但是,需要完成数据帧,并且应用值不能失败才能写入。由于我正在处理数千行,如果apply崩溃,我希望它写入输出excel,并保存我所取得的任何进展。如果我想中途停止脚本或意外发生错误,这将非常有帮助

下面是一些伪代码:

df = pd.read_excel('input.xlsx')

df["numberSquared"] = df.apply(
    lambda x: squared(x["number"]), axis=1) 

df.to_excel('output.xlsx')

Tags: 文件数据方法代码脚本dfreadinput
2条回答

您可以使用try/except并将数据框导出到catch part中的excel文件中。因此,如果应用中出现一些错误,您可以确保在错误发生后将数据框导出到excel文件

def squared(x):
    try:
      # some thing that might have errors      
    except:
      # do some thing diffrent to this special case
                  

重要提示:

这是可行的,但在代码不脆弱的情况下 正如您提到的“如果意外发生错误,”,我假设您的代码中没有try/except使其成为预期错误。 因此,在这种情况下,唯一的方法似乎是在对每一行应用任何更改之前将数据框导出到excel文件,但这并不高效(也可以在对例如200或300行应用更改后将其导出,但同样不是很聪明) 因此,我的建议是让你的错误在预期中发生,并使用适当的try/except,以避免崩溃发生在你身上

您可以尝试在lambda函数中使用try/except,下面是我编写的一些代码:

import pandas as pd
df = pd.DataFrame(data = {"number":[1,2,3,'4',5]})

def squared(i):
    try:
        x = i*i
    except:
        x = i
    return x

df["numberSquared"] = df.apply(
    lambda x: squared(x["number"]), axis=1) 

df.head()

下面是在我的环境中执行的代码的图片:

enter image description here

相关问题 更多 >