【问题标题】:Python kernel dies while doing a division in PandasPython 内核在 Pandas 中进行除法时死亡
【发布时间】:2017-08-11 17:11:12
【问题描述】:

我有一个大小约为 94.4 MB 的 csv,它包含 143,940 行和 63 列。我只是想划分两列并在另一列中输出值。我正在执行的代码是一个非常简单的代码。

DF['Col3'] = DF['Col1'] / DF['Col2']

每次我在我的 spyder3 或 Jupyter Notebook 上执行这段代码时,内核都会死掉,我以前执行过这段代码,但我没有任何问题。现在我收到错误消息

内核死机,正在重启

我在我的笔记本电脑上运行 python 2.7 和 anaconda 4.3.14 版 pandas 0.19.2 版,它有 8 GB 的 RAM。其中在运行此代码之前仅使用了 1 GB,并且在我运行此代码时使用了 100%。

如果有什么建议请指导。谢谢你

【问题讨论】:

  • 当我们不知道文件中的内容以及您如何阅读它时,我们应该如何知道该怎么做?请注意,“内核死亡”可能意味着“分段错误”,因此您需要包含某种回溯(类似 gdb),这样我们才能真正知道出了什么问题。它在 Python shell 中工作吗?它适用于其他 csv 数据吗?它适用于较旧的熊猫版本吗?您是否考虑将其发布为 pandas 问题跟踪器上的错误?看来这很可能是 pandas 中的一个错误。
  • 如果您使用pd.read_csv() 读取文件,您可以尝试指定engine='python'。纯 python 实现不太可能出现段错误,如果失败,将会有完整的回溯。
  • 我已经使用 pd.read_csv() 读取了文件。它在 python shell 中也不起作用。该文件包含带有日期和合同信息的支出信息的采购订单数据,因此数据是机密的。我所有其他代码都运行良好,问题仅出在我进行计算的地方。
  • 我试过这个并得到错误Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
  • 你不需要分享原始数据,只是为了重现错误。关于例外:您能否将edit 也包含在问题中?

标签: python pandas ipython spyder


【解决方案1】:

我在这里找到了解决方案:https://www.coursera.org/learn/python-data-analysis/discussions/weeks/4/threads/VrKtIe-TEeahuQ5PjaKRFg

显然,当涉及到 NaN 时,内核在两个系列之间存在划分问题。我按照建议将“/”运算符替换为 div() 方法解决了这个问题。

你可以用df.col1.div(df.col2)代替df.col1 / df.col2

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.div.html https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.div.html

【讨论】:

  • 当前链接已损坏或未注册的人无法访问。你能把 div() 方法贴在这里吗?
  • 是的,对不起,我认为它可以从外部访问。不用df.col1 / df.col2,你可以用df.col1.div(df.col2)。我刚刚编辑了我的答案。希望有帮助!
  • 谢谢!我也一直在使用df.col1.divide(df.col2)
  • 不客气!显然这两种方法都做同样的事情:stackoverflow.com/questions/48654181/…
猜你喜欢
  • 1970-01-01
  • 2022-12-17
  • 2020-04-06
  • 1970-01-01
  • 2022-11-27
  • 2020-02-28
  • 2022-01-24
  • 1970-01-01
  • 2018-12-11
相关资源
最近更新 更多