2017-11-25 86 views
1

Image of how my dataframe looks at the minute如何根据Python数据框中存在的值将值添加到新列中?

我想把一个新的列放到我的数据框中,名为“议会”,这将基于镇字段。举例来说,如果Town == Belfast,我想新的专栏委员会保持价值贝尔法斯特。但要注意的是,这些议会的一些价值观与城镇并不相同。另一个例子可能是,镇可能是Clogher,我想把理事会价值弗马纳。我对Python非常陌生,非常感谢任何帮助。如果您需要更多我已经遗漏的信息,请询问。 (到目前为止,我只对贝尔法斯特市议会地区尝试过)

我想要做的是循环遍历数据框中的每一行并检查“城镇”列。如果城镇栏目等于“贝尔法斯特”那么我想将价值“贝尔法斯特”输入一个名为“议会”的新栏目。

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

类型错误:字符串索引必须是整数,而不是str`

+0

你的意思''中pandas' dataframe'? – furas

+0

我很抱歉,我正在使用熊猫 – Sta1995

+0

所有的代码都没有任何意义 - 'pandas'可以在没有'for'循环的情况下使用数据 – furas

回答

0

我想你需要通过所有可能town s的不同council创建dictionary对马平,然后用replace

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

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

谢谢,这正是我正在寻找的东西,对我来说是最简单的解决方案。完美的答案,非常感谢。 – Sta1995

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

在这种情况下,你有一个小镇地图存储所有针对给定镇和相应的议会拉姆达将完成其余的工作。

相关问题