数据帧合并给出“进程以退出代码 137 完成(被信号 9 中断:SIGKILL)”

Posted

技术标签:

【中文标题】数据帧合并给出“进程以退出代码 137 完成(被信号 9 中断:SIGKILL)”【英文标题】:Dataframe merge gives `Process finished with exit code 137 (interrupted by signal 9: SIGKILL)` 【发布时间】:2020-01-24 10:32:28 【问题描述】:

我使用数据框合并 3 次来获得我想要的结果

def write_dips(writer):
    df_dips = pd.read_excel(file_path, sheet_name='DipsSummary')
    df_sales = pd.read_excel(file_path, sheet_name='SaleSummary')
    df_delivery = pd.read_excel(file_path, sheet_name='DeliverySummary')
    df_mapping = pd.read_csv(mappingfilepath, delimiter=',', skiprows=[1])

    df_dips = df_dips.merge(df_mapping, left_on='Site', right_on='SHIP TO NAME',how='left')
    df_dips = df_dips.merge(df_sales, left_on ='IDASS ID', right_on='IdassId',how='left')
    df_dips = df_dips.merge(df_delivery, left_on='SHIP-TO PARTY', right_on='Ship-To Party', how='left')

当我尝试执行第三个合并选项时,出现以下错误;

进程以退出代码 137 结束(被信号 9:SIGKILL 中断)

我该如何解决这个问题?

【问题讨论】:

我猜这是操作系统正在杀死脚本的内存问题。你能不能用head.iloc或任何少量数据取前6000行并尝试合并,看看它是否运行成功。 @DataPsycho 可以通过设置索引来克服吗?如果是这样,我应该如何为每个数据框设置索引? 这是否与您跳过 csv 文件的第一行(可能包含列名,稍后在合并过程中找不到)有关? @Edel,我尝试使用 SKiprows[0],但后来我发现它找不到列 我在每次合并中添加了 .fillna(0) 以修复内存泄漏问题 【参考方案1】:

我通过在每次合并时使用fillna(0) 克服了。

def write_dips(writer):
    df_dips = pd.read_excel(file_path, sheet_name='DipsSummary')
    df_sales = pd.read_excel(file_path, sheet_name='SaleSummary')
    df_delivery = pd.read_excel(file_path, sheet_name='DeliverySummary')
    df_mapping = pd.read_csv(mappingfilepath, delimiter=',', skiprows=[1])

df_dips = df_dips.merge(df_mapping, left_on='Site', right_on='SHIP TO NAME',how='left').fillna(0)
df_dips = df_dips.merge(df_sales, left_on ='IDASS ID', right_on='IdassId',how='left').fillna(0)
df_dips = df_dips.merge(df_delivery, left_on='SHIP-TO PARTY', right_on='Ship-To Party', how='left').fillna(0)

【讨论】:

以上是关于数据帧合并给出“进程以退出代码 137 完成(被信号 9 中断:SIGKILL)”的主要内容,如果未能解决你的问题,请参考以下文章

Pandas:如何将两个不完整的数据帧合并或合并为一个完整的数据帧

将数据帧字典合并为 1 个单个数据帧

向前搜索时合并两个数据帧

迭代多个数据帧的合并

合并第二个数据帧中只有一个额外列的数据帧[重复]

Pandas:根据条件将值从一个数据帧合并到另一个数据帧