首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeError:不可理解的类型:'numpy.ndarray修复

TypeError:不可理解的类型:'numpy.ndarray修复
EN

Stack Overflow用户
提问于 2022-01-21 08:01:24
回答 1查看 936关注 0票数 1

我有一个巨大的csv文件,大约是200 GB。我试着用块来运行它们,这样我的vscode就不会崩溃。目标是找出列"queryId“中有多少唯一变量。

我就是这么做的。

代码语言:javascript
运行
复制
if __name__ == "__main__":
    main_df = []
    for df in pd.read_csv("file", chunksize = 10000):
       ids = df.queryId.unique()
       main_df.append(ids)
    uniqueids = pd.unique(main_df)
    number_of_uniqueids = len(uniqueids)
    print("Number of Unique Ids:", number_of_uniqueids)

代码以TypeError: unhashable type: 'numpy.ndarray'结束。我认为这是因为我的main_df列表中有一堆类似于dtype=object的东西。如何解决这个问题,使我的main_df列表只有queryIds,比如"553b52fb-4575-47b9-a67e-9bf53d03cc93"?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-21 08:25:34

错误来自pd.unique(main_df),因为输入不能是多维数组而是一维数组.我得到了下面的堆栈跟踪。

代码语言:javascript
运行
复制
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.unique()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable._unique()

TypeError: unhashable type: 'numpy.ndarray'

下面的代码不会抛出错误。在这里,我使用NumPy将每个块中的唯一I附加到一个append数组中。也在CSV样本上测试过。

代码语言:javascript
运行
复制
import numpy as np

main_df = np.array([])
for df in pd.read_csv("/content/sample_data/california_housing_train.csv", chunksize = 100):
    ids = df.total_bedrooms.unique()
    main_df = np.append(main_df,ids)
uniqueids = pd.unique(main_df.flatten())
number_of_uniqueids = len(uniqueids)
print("Number of Unique Ids:", number_of_uniqueids)

输出:

代码语言:javascript
运行
复制
Number of Unique Ids: 1848
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70798084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档