为什么我得到大熊猫一系列的应用/分配函数内部
问题描述:
我的国家和人民的字典:为什么我得到大熊猫一系列的应用/分配函数内部
population_dict = {"Germany": 1111, .... }
在我的DF(sort_countries)我有一栏叫国家,我要添加叫从上面的字典人口另一个柱(用人口匹配国家)
population_df = sort_countries.assign(
population=lambda x: population_dict[x["country"]], axis = 1)
population_df.head()
这给错误:TypeError: 'Series' objects are mutable, thus they cannot be hashed
。
为什么x["country"]
系列,当我想象它应该只返回国家的名称。
这一点熊猫总是困惑我。在我的lambda中,我期望x是一排,我只是从那一行中选择国家。相反,len(x [“country”))给了我192(我的国家数量,整个系列)。
我怎么能匹配他们使用lambdas而不是一个单独的功能? 谢谢!
答
请注意,x["country"]
是Series
,虽然是单个元素之一,但不能用于索引字典。如果您只需要与其关联的值,请使用x["country"].item()
。
然而,对于这种事情做了一个更好的办法裁缝用df.map
:
population_df["population"] = population_df["country"].map(population_dict)
map
将自动映射从population_df拍摄键[“国家”,并将这些在population_dict
映射到相应的值。
地图一个完美的作品。但.item()没有。我相信x [“country”]是整个专栏的一个系列。不明白为什么。我只需要那个特定的行... –