【问题标题】:Using defaultdict to bin values in pandas使用 defaultdict 对 pandas 中的值进行 bin 处理
【发布时间】:2020-08-31 09:49:18
【问题描述】:

我正在尝试使用以下字典 ('ContinentDict') 来分类 国家/地区

因此,我想按值对键进行分类

ContinentDict  = {'China':'Asia', 
                  'United States':'North America', 
                  'Japan':'Asia', 
                  'United Kingdom':'Europe', 
                  'Russian Federation':'Europe', 
                  'Canada':'North America', 
                  'Germany':'Europe', 
                  'India':'Asia',
                  'France':'Europe', 
                  'South Korea':'Asia', 
                  'Italy':'Europe', 
                  'Spain':'Europe', 
                  'Iran':'Asia',
                  'Australia':'Australia', 
                  'Brazil':'South America'}

当我尝试选项 1:

v = {}

for key, value in sorted(d.items()):
    v.setdefault(value, []).append(key)

我得到错误:

Traceback (most recent call last):
  File "<input>", line 2, in <module>
TypeError:'dict' object is not callable

当我尝试选项 2:

from collections import defaultdict

dictionary = defaultdict(list)
for key, value in ContinentDict:
dictionary[value].append(key)

我得到错误:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: first argument must be callable or None

谁能帮我一把?

【问题讨论】:

    标签: python pandas loops dictionary bin


    【解决方案1】:

    对于选项 2,我认为您错过了 .items()。 这对我有用:

    ContinentDict  = {'China':'Asia', 
                      'United States':'North America', 
                      'Japan':'Asia', 
                      'United Kingdom':'Europe', 
                      'Russian Federation':'Europe', 
                      'Canada':'North America', 
                      'Germany':'Europe', 
                      'India':'Asia',
                      'France':'Europe', 
                      'South Korea':'Asia', 
                      'Italy':'Europe', 
                      'Spain':'Europe', 
                      'Iran':'Asia',
                      'Australia':'Australia', 
                      'Brazil':'South America'}
    
    
    dictionary = defaultdict(list)
    for key, value in ContinentDict.items():
        dictionary[value].append(key)
    
    print(dictionary)
    

    输出:

    defaultdict(<class 'list'>, {'Asia': ['China', 'Japan', 'India', 'South Korea', 'Iran'], 'North America': ['United States', 'Canada'], 'Europe': ['United Kingdom', 'Russian Federation', 'Germany', 'France', 'Italy', 'Spain'], 'Australia': ['Australia'], 'South America': ['Brazil']})
    

    【讨论】:

    • @Anshul,这一行: dictionary = defaultdict(list) 仍然给我错误; TypeError:第一个参数必须是可调用的或无
    • @Caledonian26 - 不确定。你能看看这个帖子吗:stackoverflow.com/questions/42137849/…。可能会有帮助
    • @Anshul 是的,我现在明白了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-08-14
    • 2015-05-13
    • 2012-04-28
    • 2017-03-16
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多