如何替换熊猫数据框中看起来相似的值?

Posted

技术标签:

【中文标题】如何替换熊猫数据框中看起来相似的值?【英文标题】:How do I replace the similar looking values in a pandas dataframe? 【发布时间】:2018-12-04 13:55:59 【问题描述】:

我是熊猫新手。我的数据集中有以下数据类型。 (数据集是从 Kaggle 下载的 Indian Startup Funding。)

Date                datetime64[ns]
StartupName                 object
IndustryVertical            object
CityLocation                object
InvestorsName               object
InvestmentType              object
AmountInUSD                 object
dtype: object

data['AmountInUSD'].groupby(data['CityLocation']).describe()

我做了上面的操作,发现很多城市都是类似的例子,

Bangalore   
Bangalore / Palo Alto
Bangalore / SFO
Bangalore / San Mateo
Bangalore / USA
Bangalore/ Bangkok

我想做下面的操作,但我不知道这个代码。

在 CityLocation 列中,找到所有以“Bang”开头的单元格,并将它们全部替换为“Bangalore”。我们将不胜感激。

我做到了

data[data.CityLocation.str.startswith('Bang')] 

然后我不知道该怎么办。

【问题讨论】:

请展示您编写的代码 数据[data.CityLocation.str.startswith('Bang')] 【参考方案1】:

您可以使用loc 函数在列中查找子字符串匹配的值,并将其替换为您选择的值。

import pandas as pd

df = pd.DataFrame('CityLocation': ['Bangalore', 'Dangerlore', 'Bangalore/USA'], 'Values': [1, 2, 3])
print(df)
#     CityLocation  Values
# 0      Bangalore       1
# 1     Dangerlore       2
# 2  Bangalore/USA       3


df.loc[df.CityLocation.str.startswith('Bang'), 'CityLocation'] = 'Bangalore'
print(df)
#   CityLocation  Values
# 0    Bangalore       1
# 1   Dangerlore       2
# 2    Bangalore       3

【讨论】:

嗨,约翰,感谢您的回答:),但我想更改的是字符串本身。我不想更改班加罗尔和危险洛尔对应的值。【参考方案2】:

pandas 0.23 提供了一种处理文本的好方法。请参阅文档Working with Text Data。您可以使用regular expressions 来捕获和替换文本。

import pandas as pd
df = pd.DataFrame('CityLocation': ["Bangalore / Palo Alto", "Bangalore / SFO", "Other"])

df['CityLocation'] = df['CityLocation'].str.replace("^Bang.*", "Bangalore")

print(df)

会收获

  CityLocation
0    Bangalore
1    Bangalore
2        Other

【讨论】:

感谢您的回答。有效。我将对数据中的其他城市做同样的事情。

以上是关于如何替换熊猫数据框中看起来相似的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何识别和标记熊猫数据框中的相似行

如何用熊猫数据框中的范围替换列值

用不同的随机数填充熊猫数据框中所有出现的值

在熊猫数据框中使用正则表达式替换列值

如何在熊猫中合并两个数据框以替换 nan

熊猫中的条件替换