如何根据Python中数据帧中的现有值向新列添加值?

2024-05-23 17:19:44 发布

您现在位置:Python中文网/ 问答频道 /正文

Image of how my dataframe looks at the minute

我正在尝试在我的数据框架中添加一个新的列,名为“council”,它将基于Town字段。例如,如果Town == Belfast,我希望新的column council保存贝尔法斯特的值。不过,需要注意的是,这些议会的一些价值观与该镇不同。另一个例子可能是,镇上可能是克洛格,我想在议会价值费尔马纳。我对python非常陌生,非常感谢您的帮助。如果你需要更多我遗漏的信息,请询问(到目前为止,我只在议会区(贝尔法斯特)试过这个

我要做的是循环遍历数据帧中的每一行,并检查“Town”列。如果Town列等于“Belfast”,那么我想将值“Belfast”输入到一个名为“Council”的新列中

count = 0
for index, row in PsniYear1617Cleaned.iterrows():
     grabtown = PsniYear1617Cleaned["Town"]
    for value in grabtown: 
        if value["Town"][0] == "Belfast":
            PsniYear1617Cleaned.set_value(index, 'Council', value["Belfast"])
            count = count + 1

TypeError
Traceback (most recent call last) <ipython-input-122-31f11c973fc5> in <module>() 3 grabtown = PsniYear1617Cleaned["Town"] 4 for value in grabtown: ----> 5 if value["Town"][0] == "Belfast": 6 PsniYear1617Cleaned.set_value(index, 'Council', value["Belfast"]) 7 count = count + 1

TypeError:字符串索引必须是整数,而不是str`


Tags: 数据inforindexifvaluecountset
2条回答
PsniYear1617Cleaned[:,'council'] = PsniYear1617Cleaned['Town'].apply(lambda x: TOWN_MAP[x])

在本例中,您有一个城镇地图,其中存储了给定城镇的所有相应议会,lambda将完成其余的工作

我认为您需要创建dictionary以便通过所有可能的town使用不同的council进行映射,然后使用^{}

d = {'Enniskillen':'Fermanagh', 
     'Clogher':'Fermanagh', 
      'town1':'council1',
      ...}

PsniYear1617Cleaned['council'] = PsniYear1617Cleaned['Town'].replace(d)

相关问题 更多 >