在dataframe python中替换字符串

在dataframe python中替换字符串,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个(711000)数据帧。在这7列中的某些列中,有字符串。 在Coulmn 2和第1000行中,有一个字符串“London”。我想把它改成“巴黎”。 我该怎么做?我在网上到处找,但找不到办法。我使用了这些命令,但都不起作用: df['column2'].replace('London','Paris') df['column2'].str.replace('London','Paris') re.sub('London','Paris',df['column2']) 我通常会收到以下错误

我有一个(711000)数据帧。在这7列中的某些列中,有字符串。 在Coulmn 2和第1000行中,有一个字符串“London”。我想把它改成“巴黎”。 我该怎么做?我在网上到处找,但找不到办法。我使用了这些命令,但都不起作用:

df['column2'].replace('London','Paris')
df['column2'].str.replace('London','Paris')
re.sub('London','Paris',df['column2'])
我通常会收到以下错误:

TypeError: expected string or bytes-like object

如果您想替换一行(您提到了第1000行),可以使用
.loc
。如果要替换所有出现的
'London'
,可以执行以下操作:

import pandas as pd
df = pd.DataFrame({'country': ['New York', 'London'],})
df.country = df.country.str.replace('London', 'Paris')
或者,您可以编写自己的替换函数,然后使用
。apply

def replace_country(string):
    if string == 'London':
        return 'Paris'
    return string

df.country = df.country.apply(replace_country)

第二种方法有点过头了,但这是一个很好的例子,可以更好地概括更复杂的任务。

在用re替换非字符检查之前

import re
for r, map in re_map.items():
    df['column2'] = [re.sub(r, map, x) for x in df['column2']]


这些都是很好的答案,但许多答案并没有矢量化,只对系列中的每个项目进行一次操作,而不是对整个系列进行操作

一个非常可靠的过滤+替换策略是创建一个掩码或子集真/假序列,然后使用loc替换该序列:

mask = df.country == 'London' 
df.loc[mask, 'country'] = 'Paris'

# On 10m records:
  # this method < 1 second 
  # @Charles method 1 < 10 seconds
  # @Charles method 2 < 3.5 seconds
  # @jose method didn't bother because it would be 30 seconds or more
mask=df.country==“伦敦”
df.loc[掩码,'国家]='巴黎'
#根据记录:
#此方法小于1秒
#@Charles方法1<10秒
#@Charles方法2<3.5秒
#@jose方法没有麻烦,因为它需要30秒或更长时间

请将df.info()的输出添加到此问题。其次,当描述数据帧的大小时,通常模式是(行、列)。所以,我认为您的数据帧是(11000,7)
df['column2']=df['column2'].replace(to_replace='London',value='Paris')
应该可以工作。我没有使用RETURN:((除非绝对必要,否则避免在数据帧上进行循环。这些操作非常慢。请改用内置函数。