【发布时间】:2020-02-28 02:26:03
【问题描述】:
我在 pandas 中有一个表,其中每一行都是一个具有属性的对象。每个对象看起来像
{'type': 'Feature',
'properties': {'GEO_ID': '0400000US23',
'STATE': '23',
'NAME': 'Maine',
'LSAD': '',
'CENSUSAREA': 30842.923}}
我想遍历每一行并在 properties 字典中添加一个名为 TERPS 的属性,使其看起来像
{'type': 'Feature',
'properties': {'GEO_ID': '0400000US23',
'STATE': '23',
'NAME': 'Maine',
'LSAD': '',
'CENSUSAREA': 30842.923,
'TERPS': 82}} <----- new attribute
TERPS 属性的值应该来自另一个字典 counts,看起来像
California 1161
New York 601
Florida 588
Minnesota 533
Maryland 463
Washington 438
Texas 363
Pennsylvania 356
Ohio 348
我可以为一行做到这一点:
df.iloc[0]['properties']['TERPS'] = counts[df.iloc[0]['properties']['NAME']]
但是如何对所有行执行此操作?这将获得每一行的值,但我正在努力分配它。
df.apply(lambda x : counts[x['properties']['NAME']], axis=1)
【问题讨论】:
-
lambda x: x['properties']['TERPS'] = counts[x['properties']['NAME']]? -
抛出“lambda 不能包含赋值”错误
-
您能否分享带有预期输出的熊猫数据框。您可以添加额外的细节而无需遍历每一行。
标签: python pandas lambda apply