python - 根据其他系列更改 pandas 系列中的元素

标签 python pandas

我有两个 Pandas 系列,名字很长:

0           abrakadabra
1           hokus pokus
2           lumio
3           flippendo   
4           avada kedavra

第二个短名称:

0           abra
1           kra
2           avada
3           hokus          
4           lalala

目的是检查第一个列表中的任何元素是否包含第二个列表中的元素。如果是这样,请将第一个列表中的元素更改为第二个列表中的适当元素。 期望的输出:

0 abra
1 hokus
2 lumio
3 flippendo
4 avada

创建了以下函数:

def common(serie1,serie2):
    for index1,value1 in enumerate(list(serie1)):
         for index2,value2 in enumerate(list(serie2)):
              if value1 in value2:
                  serie2[index2]=value1
              else:
                  serie2[index2]=value2
    return serie2

对于这两个短篇系列来说,它效果非常好。然而,对于较长的函数,当 value1 不在 value2 中时,函数不会保存 serie2 中的名称,而是将 0 放在那里。我找不到我的函数有什么问题。

最佳答案

您可以使用extract通过将 s2 的所有值通过 | 加入正则表达式 ORfillna :

pat = r'({})'.format('|'.join(s2))
#for exact match
#pat = r'(\b{}\b)'.format('|'.join(s2))
s = s1.str.extract(pat, expand=False).fillna(s1)
print (s)
0         abra
1        hokus
2        lumio
3    flippendo
4        avada
Name: A, dtype: object

关于python - 根据其他系列更改 pandas 系列中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48984731/

相关文章:

python - 如何在 Python 3 中对字符串类型的变量进行 base64 编码/解码?

python - 创建一个新的比率列

python - 使用 Pandas 和 Regex 将文件名写入 csv

python - 合并数据框而不重复列

python - 在pyqt5中的QWidget上实现dragMoveEvent?

python - 在 Python Spyder 交互式绘图中。如何链接图以便当我放大图时它会放大其余图

python - 从同一模块动态实例化类会导致 main 运行两次

python - 使用元素组作为标题的旧数据框的新数据框

python - 在 pandas DataFrame 中将某些值替换为 NaN 时如何避免数据类型转换?

python - 如何从另一个文件夹读取数据文件而不给出python中的完整路径?