python - 使用 pandas 根据文本条件将字符添加到列

标签 python pandas database dataframe

我正在尝试使用 pandas 进行一些数据清理。想象一下,我有一个数据框,其中有一个名为“Number”的列,并包含以下数据:“1203.10”、“4221”、“3452.11”等。我想在数字前添加一个“M”,其中有一个点和末尾有一个零。对于此示例,它将把“1203.10”转换为“M1203.10”。

我知道如何获取包含带有点并以零结尾的数字的数据框。

假设数据框名为“df”。

pointzero = '[0-9]+[.][0-9]+[0]$'
pz = df[df.Number.str.match(pointzero)]

但是我不确定如何在“pz”之后在开头添加“M”。我知道的唯一方法是使用 for 循环,但我认为有更好的方法。任何建议都会很棒!

最佳答案

您可以使用boolean indexing :

pointzero = '[0-9]+[.][0-9]+[0]$'
m = df.Number.str.match(pointzero)

df.loc[m, 'Number'] = 'M' + df.loc[m, 'Number']

或者,使用 str.replace和一个稍微不同的正则表达式:

pointzero = '([0-9]+[.][0-9]+[0]$)'
df['Number'] = df['Number'].str.replace(pointzero, r'M\1', regex=True))

示例:

     Number
0  M1203.10
1      4221
2   3452.11

关于python - 使用 pandas 根据文本条件将字符添加到列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74343024/

相关文章:

Android Phonegap 数据库

python - 在 Python 中通过 strptime 解析不带前导零的时间

javascript 相当于 python 的编译和执行

Python Pandas 回归

python - Pandas:使用 set_index() 将列设置为索引会创建一个子索引。为什么会发生这种情况以及如何消除它?

python - 如何从有条件的 pandas 系列中删除字符?

python - 仅显示回溯的第一行和最后一行

python - 如何获得使用 Numpy 的时间?

database - 是否可以在同一个 Django 项目中使用不同的 SQLite 数据库?

php - Laravel Eloquent 急切加载 : Join same table twice