繁体   English   中英

Python - 如何比较具有混合字符串的两列但仍表示相同的值?

[英]Python - How to compare two columns with mixed character strings but still represent the same value?

我有两个这样的数据框:

codename = 

id       code       region
1        AAA        Alpha
2        BBB        Beta
3        CCC        Gamma
4        DDD        Delta
...      ...        ...   
list = 

id       region     code
1                   BBB
2                   DDD1
3                   AAA
4                   CCC10
5                   AAA2
...                 ...

我想用第一个数据框中的代码填充第二个数据框中的区域列。 我如何比较这两个代码列,因为在第二个数据框中,代码有数字但仍代表与前三个字母代码相同的区域。

我的两个数据集都很大,所以有什么方法可以最快地插入值。 先感谢您!

您想要做的称为连接 - 即,根据键列上的协议从另一个表中填充一个表中的值。 熊猫知道如何做到这一点(文档)

首先,您需要清理您要加入的列:

# create a new column with the first 3 letters of values in the 'code' column
list['code_clean'] = list['code'].str.slice(0, 2)  # keep first 3 letters
# drop the empty column from the list df so there's no overlap in the target column
list.drop('region', axis=1, inplace=True)

现在我们可以加入键列(在您的情况下它是“代码”列)。 pandas 要求该列是“其他”数据框的索引:

list = list.join(codename.set_index('code'), on='code_clean')
list

出去:

id       region     code     code_clean
1        Beta       BBB      BBB
2        Delta      DDD1     DDD
3        Alpha      AAA      AAA
4        Gamma      CCC10    CCC
5        Alpha      AAA2     AAA

此外,永远不要使用 python 内置名称作为变量名(“列表”数据框)。 它可以而且将会导致意想不到的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM