【问题标题】:Package function returns: "Value error: cannot insert 'column name', already exists"?包函数返回:“值错误:无法插入‘列名’,已经存在”?
【发布时间】:2020-11-29 02:28:15
【问题描述】:

我下载并一直在尝试运行以下包:https://pypi.org/project/ecomplexity/#description

这也可以在 github 上找到:https://github.com/cid-harvard/py-ecomplexity

自述文件页面有一个代码应该如何工作的示例,如下所示:

from ecomplexity import ecomplexity
from ecomplexity import proximity

# Import trade data from CID Atlas
data_url = "https://intl-atlas-downloads.s3.amazonaws.com/country_hsproduct2digit_year.csv.zip"
data = pd.read_csv(data_url, compression="zip", low_memory=False)
data = data[['year','location_code','hs_product_code','export_value']]

# Calculate complexity
trade_cols = {'time':'year', 'loc':'location_code', 'prod':'hs_product_code', 'val':'export_value'}
cdata = ecomplexity(data, trade_cols)

# Calculate proximity matrix
prox_df = proximity(data, trade_cols)

我添加了import pandas as pd 以便可以读取.csv 文件并添加print(prox_df) 以提供第二个函数的结果。我希望第二个函数产生一个值矩阵,其中元素是来自任何位置的任何两个产品的最小条件概率。 但是,从自述文件页面运行此示例时,出现以下错误:

Traceback (most recent call last):
  File "filepath/project.py", line 16, in <module>
    prox_df = proximity(data, trade_cols)
  File "filepath\venv\lib\site-packages\ecomplexity\proximity.py", line 79, in proximity
    output = output.reset_index()
  File "filepath\venv\lib\site-packages\pandas\core\frame.py", line 4849, in reset_index
    new_obj.insert(0, name, level_values)
  File "filepath\venv\lib\site-packages\pandas\core\frame.py", line 3618, in insert
    self._mgr.insert(loc, column, value, allow_duplicates=allow_duplicates)
  File "filepath\venv\lib\site-packages\pandas\core\internals\managers.py", line 1147, in insert
    raise ValueError(f"cannot insert {item}, already exists")
ValueError: cannot insert prod, already exists

是什么导致了这个错误?我怎样才能防止这个错误发生,以便我可以使用这个包的'proximity'功能?

【问题讨论】:

    标签: python pandas dataframe package valueerror


    【解决方案1】:

    我刚刚尝试使用 pandas 1.1.0,但失败并显示相同的错误消息。然后我降级到 pandas 0.25.0 并且它起作用了。

    您应该考虑联系库作者以升级以使用最新版本的 pandas

    pip3 install -Iv pandas==0.25.0
    

    【讨论】:

    • 感谢您提供的信息,这很有帮助,但我现在遇到了一个新错误:``` Traceback(最近一次调用最后一次):文件“filepath/project.py”,第 1 行,在 from ecomplexity import ecomplexity File "filepath\ecomplexity\ecomplexity.py",第 4 行,在 from ecomplexity import calc_discrete_proximity ImportError: cannot import name 'calc_discrete_proximity' from partial initialized module 'ecomplexity' ``` Do你认为我需要建立一个新项目并从头开始尝试吗?
    • @BlackLotus501 是的,我绝对推荐一个单独的虚拟环境,因为版本地狱正在发生
    • 感谢您的意见。确认一下,这里的步骤是:创建一个新的环境,打开一个新的python脚本,安装pandas(0.25版),再次安装ecomplexity,再次运行上面的脚本?
    • 我刚刚打开了一个新环境并安装了此处列出的 pandas 和 numpy 的确切版本:github.com/complexly/py-ecomplexity/blob/master/… 但我仍然收到相同的错误消息
    • 仔细检查您的版本print(pd.__version__)。我在 jupyter env 中运行,所以我也需要重新启动内核
    猜你喜欢
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 2021-10-04
    • 2010-09-22
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多