如何替换熊猫数据框中看起来相似的值?
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
【讨论】:
感谢您的回答。有效。我将对数据中的其他城市做同样的事情。以上是关于如何替换熊猫数据框中看起来相似的值?的主要内容,如果未能解决你的问题,请参考以下文章