首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫:如果交叉路口,那么更新数据

熊猫:如果交叉路口,那么更新数据
EN

Stack Overflow用户
提问于 2016-03-23 20:13:30
回答 1查看 142关注 0票数 0

我有两个数据:

各国:

代码语言:javascript
复制
    Country or Area Name    ISO-2   ISO-3
0   Afghanistan              AF     AFG
1   Philippines              PH     PHL
2   Albania                  AL     ALB
3   Norway                   NO     NOR
4   American Samoa           AS     ASM

合同:

代码语言:javascript
复制
    Country Name                   Jurisdiction     Signature year
0   Yemen                             KY;NO;CA;NO   1999.0
1   Yemen                                BM;TC;YE   2007.0
2   Congo,                                  CD;CD   2015.0
3   Philippines                                PH   2009.0
4   Philippines                             PH;PH   2007.0
5   Philippines                                PH   2001.0
6   Philippines                             PH;PH   1997.0
7   Bolivia, Plurinational State of         BO;BO   2006.0

我想:

  1. 检查contracts中的列contracts是否包含来自countries ISO-2列的至少一个字母代码。

我尝试过无数种方法来测试是否有一个交叉口,但它们都不起作用。我最后一次尝试是:

代码语言:javascript
复制
i1 = pd.Index(contracts['Jurisdiction of Incorporation'].str.split(';'))
i2 = pd.Index(countries['ISO-2'])
print i1, i2
i1.intersection(i2)

这给了我TypeError: unhashable type: 'list'

  1. 如果至少有一个代码存在,我希望用只包含布尔值的contracts数据want更新new column数据。

contracts['new column'] = np.where("piece of code that will actually work", 1, 0)

所以想要的输出是

代码语言:javascript
复制
    Country Name                   Jurisdiction     Signature year  new column
0   Yemen                             KY;NO;CA;NO   1999.0              1
1   Yemen                                BM;TC;YE   2007.0              0
2   Congo,                                  CD;CD   2015.0              0
3   Philippines                                PH   2009.0              1
4   Philippines                             PH;PH   2007.0              1
5   Philippines                                PH   2001.0              1
6   Philippines                             PH;PH   1997.0              1
7   Bolivia, Plurinational State of         BO;BO   2006.0              0

我怎样才能做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-23 20:24:16

吃了几口,但试试这个:

代码语言:javascript
复制
occuring_iso_2_codes = set(countries['ISO-2'])

contracts['new column'] = contracts.Jurisdiction.apply(
    lambda s: int(bool(set(s.split(';')).intersection(occuring_iso_2_codes))))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36187855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档