数据帧合并给出“进程以退出代码 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)”的主要内容,如果未能解决你的问题,请参考以下文章