python - pandas dataframe - 两列字符串匹配和分组

标签 python string pandas dataframe

我有一个 pandas 数据框,其中包含两列中的字符串。 我想为每一列提取除数字之外的所有相似字符串,并添加新列,其中相似的文本与 idx 值进行交换。

从此:

Id    Name1    Name2
0     Alpha 1  Bravo 3
1     Alpha 2  Alpha 2
2     Bravo 3  Alpha 1

对此:

Id    Name1    Name2    NewCol1    NewCol2
0     Alpha 1  Bravo 3  1          2
1     Alpha 2  Zero  2  1          3
2     Bravo 3  Alpha 1  2          1

是否有一个简单的解决方案,无需大的迭代循环?

最佳答案

我认为需要使用 stackMultiIndex 创建 Series ,删除数字,对于类别使用 factorize ,最后unstackjoin原文:

s = df.set_index('Id').stack().str.replace('\d+', '')

df = df.join(pd.Series(pd.factorize(s)[0] + 1, index=s.index).unstack().add_prefix('New'))
print (df)
   Id    Name1    Name2  NewName1  NewName2
0   0  Alpha 1  Bravo 3         1         2
1   1  Alpha 2   Zero 2         1         3
2   2  Bravo 3  Alpha 1         2         1

详细信息:

print (s)
Id       
0   Name1    Alpha 
    Name2    Bravo 
1   Name1    Alpha 
    Name2     Zero 
2   Name1    Bravo 
    Name2    Alpha 
dtype: object

print (pd.factorize(s)[0] + 1)
[1 2 1 3 2 1]

关于python - pandas dataframe - 两列字符串匹配和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50811228/

相关文章:

swift - 在 Swift 中,String.CharacterView 实例的计数是否在所有情况下都始终等于 startIndex 和 endIndex 之间的距离?

python - 无法联系 pgAdmin 4 服务器 : Fatal error

java - 正则表达式同时显示不同的返回不同的结果

python - 如何获取多个多数据中的点

c# - 如何创建一个包含数字数组和字符串数组的随机类

python - 如何重新索引以合并两个数据框?

python - 按日期过滤 Pandas 数据框不起作用

pandas - 使用 Pandas 数据框旋转和转置

python - python列表中通过其值的子字符串获取元素

python - 抽象类可以强制继承类将方法实现为静态吗?