【问题标题】:Dataframe merge gives `Process finished with exit code 137 (interrupted by signal 9: SIGKILL)`数据帧合并给出“进程以退出代码 137 完成(被信号 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) 以修复内存泄漏问题

标签: python python-3.x pandas pycharm pandas-groupby


【解决方案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)

【讨论】:

    猜你喜欢
    • 2020-02-17
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 2020-07-02
    • 2019-10-13
    • 2020-12-05
    • 2020-09-13
    相关资源
    最近更新 更多