我在熊猫中有一张桌子,其中每一行都是具有属性的对象。每个对象看起来像
{'type': 'Feature',
'properties': {'GEO_ID': '0400000US23',
'STATE': '23',
'NAME': 'Maine',
'LSAD': '',
'CENSUSAREA': 30842.923}}
我想遍历每一行,TERPS
并向properties
字典添加另一个属性,以使它看起来像
{'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
但可以在与一起使用的函数中执行此操作apply()
。
def change(x):
x['properties']['TERPS'] = counts[x['properties']['NAME']]
df.apply(change)
最小的工作实例
import pandas as pd
counts = {'Maine': 83}
data = {'A': [{'type': 'Feature',
'properties': {'GEO_ID': '0400000US23',
'STATE': '23',
'NAME': 'Maine',
'LSAD': '',
'CENSUSAREA': 30842.923}}]}
df = pd.DataFrame(data)
def change(x):
x['properties']['TERPS'] = counts[x['properties']['NAME']]
df['A'].apply(change)
print(df['A'].iloc[0]['properties'])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句