Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将DataFrame中出现的所有特定字符串替换为Python中的另一个字符串_Python_Python 3.x_Pandas_Numpy_Replace - Fatal编程技术网

如何将DataFrame中出现的所有特定字符串替换为Python中的另一个字符串

如何将DataFrame中出现的所有特定字符串替换为Python中的另一个字符串,python,python-3.x,pandas,numpy,replace,Python,Python 3.x,Pandas,Numpy,Replace,我知道这个主题已经讨论过几百次了,当然,我试过了所有看起来不错的东西,比如 df.replace("x", "y", regex=True) df.str.replace 方法,但不知何故,它对我的数据帧不起作用 我有一个如下所示的数据帧 To From CC Title Body aa@bb cc@rr; cd@ee bg@hy; rg@we jkasdf jk

我知道这个主题已经讨论过几百次了,当然,我试过了所有看起来不错的东西,比如

df.replace("x", "y", regex=True)
df.str.replace 
方法,但不知何故,它对我的数据帧不起作用

我有一个如下所示的数据帧

To          From             CC               Title          Body
aa@bb   cc@rr; cd@ee    bg@hy; rg@we         jkasdf         jklasdf
er@ty    po@we          oi@we; we@iw         kljasldf        kasdf
我有一些奇怪的邮件地址,如/o-exchange\Smith,因为我从组织的exchange电子邮件服务器检索outlook电子邮件数据。事情是,似乎有些人有几种类型的这种奇怪的地址,所以我想把它们改成一个独特的电子邮件给那个特定的人

所以我试着

df = df.replace("weird email", "unique email", regex=True)
and 
df['From'] = df['From'].str.replace("weird address", "unique address", regex=True)
但它毕竟没有将所有奇怪的地址替换为相同的唯一地址。 是否有任何pythonic方法将所有特定字符串替换为另一个字符串

我的数据帧的输入和输出示例如下所示

输入

我检查了这个人所有的奇怪地址,我喜欢这样编码

df = df.replace('PersonA weird address1', 'Unique addressA')
df = df.replace('PersonA weird address2', 'Unique addressA')

df = df.replace('PersonB weird address1', 'Unique addressB')
df = df.replace('PersonB weird address2', 'Unique addressB')
我想要的结果是

        To                          From                            CC                
      abc@we                      Unique@C              Unique@A; Unique@B  
 Unique@C; exadress@ww             Unique@A              Unique@A; Unique@B
我列出了一个奇怪的地址和拥有这个地址的人。
因此,我只想将所有内容集成到一个唯一的地址中,如上图所示。

创建一个字典,其中键是您所拥有的,值是您所想要的 然后在每列上使用map

keys = ["".join(x) for x in it.permutations(["a","b","c","d"],3)]
values = ["".join(x) for x in it.permutations(["e","f","g","h"],3)]
rand_dict = {}
for k in keys:
    rand_dict[k]=random.choice(values)
df = pd.DataFrame()
df["a"] = random.choices(keys,k = 10)
df["b"] = random.choices(keys,k = 10)
df["c"] = random.choices(keys,k = 10)
#till here we created a demo DataFrame

for col in df:
    df[col] = df[col].map(rand_dict).fillna(df[col])


您能否发布样本输入和输出为给定样本数据添加您的预期输出。
keys = ["".join(x) for x in it.permutations(["a","b","c","d"],3)]
values = ["".join(x) for x in it.permutations(["e","f","g","h"],3)]
rand_dict = {}
for k in keys:
    rand_dict[k]=random.choice(values)
df = pd.DataFrame()
df["a"] = random.choices(keys,k = 10)
df["b"] = random.choices(keys,k = 10)
df["c"] = random.choices(keys,k = 10)
#till here we created a demo DataFrame

for col in df:
    df[col] = df[col].map(rand_dict).fillna(df[col])