在 Pandas DataFrame 的列中查找并替换所有匹配但不区分大小写的字符串

Posted

技术标签:

【中文标题】在 Pandas DataFrame 的列中查找并替换所有匹配但不区分大小写的字符串【英文标题】:Find and replace all the strings that match but case insensitive in a column of Pandas DataFrame 【发布时间】:2020-07-25 16:27:39 【问题描述】:

我有一个带有分类列的 Pandas DataFrame:

df = pd.DataFrame('Source': ['Coronavirus','Sars','sars','coronavirus',
                          'CoronaVirus','Sars'])
df["Source"] = df["Source"].astype('category')
print(df)
        Source
0  Coronavirus
1         Sars
2         sars
3  coronavirus
4  CoronaVirus
5         Sars

请注意文字书写方式的差异,例如(冠状病毒 vs. 冠状病毒 vs. 冠状病毒)。 我希望实现的是转换所有相同文本,即coronavirussars,但不管它是如何写的(首字母大写,等),并统一所有这些。所以期望的输出是:

        Source
0  Coronavirus
1         Sars
2         Sars
3  Coronavirus
4  Coronavirus
5         Sars

最终结果是如何产生的(冠状病毒或冠状病毒)并不重要。

提前致谢。

【问题讨论】:

【参考方案1】:

使用Series.str.capitalize,因为这个函数默认小写:

df["Source"] = df["Source"].str.capitalize()

如果需要将每个单词分别大写,(如果实际数据值有2个或更多单词)使用Series.str.title,默认也是小写:

df["Source"] = df["Source"].str.title()
print (df)
        Source
0  Coronavirus
1         Sars
2         Sars
3  Coronavirus
4  Coronavirus
5         Sars

【讨论】:

@JvdV - 你是对的,刚刚经过测试。它小写是因为capitalizetitle

以上是关于在 Pandas DataFrame 的列中查找并替换所有匹配但不区分大小写的字符串的主要内容,如果未能解决你的问题,请参考以下文章

从 pandas DataFrame 中的列中提取 JSON 数据

在Pandas Dataframe列中查找某些单词,如果找到,则将它们添加到新列中

Pandas:如何在第二个 DataFrame 的另一列中查找子字符串位置

pandas:查找部分字符串并在新列中使用它

将列表读入 pandas DataFrame 的列

我们可以在 Spark DataFrame 列中使用 Pandas 函数吗?如果是这样,怎么做?