如何根据Python中我的数据框中存在的值为新列添加值?

时间:2017-11-25 13:56:35

标签: python pandas dataframe jupyter

Image of how my dataframe looks at the minute

我正在尝试在我的数据框中添加一个名为“council”的新列,该列将基于Town字段。例如,如果Town == Belfast,我希望新的列理事会保持值Belfast。然而,需要注意的是,这些议会的一些价值观与城镇不同。另一个例子可能是,该镇可能是Clogher,我想把理事会的价值放在Fermanagh身上。我是python的新手,非常感谢任何帮助。如果您需要我遗漏的更多信息,请询问。 (到目前为止,我只为贝尔法斯特议会区试过这个)

我想要做的是遍历数据框中的每一行并检查“城镇”列。如果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`

2 个答案:

答案 0 :(得分:0)

PsniYear1617Cleaned[:,'council'] = PsniYear1617Cleaned['Town'].apply(lambda x: TOWN_MAP[x])

在这种情况下,你有一个城镇地图,它存储了给定城镇的所有相应的议会,而lambda将完成其余的工作。

答案 1 :(得分:0)

我认为您需要使用不同的dictionary创建所有town的maping来创建council,然后使用replace

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

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