包函数返回:“值错误:无法插入“列名”,已存在”?

2024-06-26 10:53:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我下载并一直尝试运行以下程序包: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

是什么导致了这个错误?如何防止发生此错误,以便使用此软件包的“接近”功能


Tags: inpypandasdatavenvliblinecode
1条回答
网友
1楼 · 发布于 2024-06-26 10:53:20

我刚刚尝试了pandas 1.1.0,但失败了,出现了相同的错误消息。然后我降级到熊猫0.25.0,它成功了

<>你应该考虑联系库作者升级到与最新版本的熊猫

一起工作。
pip3 install -Iv pandas==0.25.0

相关问题 更多 >