python - 如果值有两个以上空格,Pandas 会替换 df 中的行值

标签 python pandas

我必须清理数据库

Id  FirstName LastName
12  Jannie    Pretorious
15  Elsa      Van Niekerk
14  Koos      SC$ 4 MMV Extraction SHift B

我想删除非姓氏的值,在本例中为 id 14 : Koos SC$ 4 ...

如果单元格值中存在两个以上空格,我可以识别出错误的姓氏。

我想迭代 df 并用 '' 替换所有具有两个以上空格的值。

我看过这个问题Conditional Replace Pandas ,但这对我没有帮助。

预期输出:

Id  FirstName LastName
12  Jannie    Pretorious
15  Elsa      Van Niekerk
14  Koos      

最佳答案

使用Series.maskSeries.str.count :

df['LastName'] = df['LastName'].mask(df['LastName'].str.count(' ') > 2, '')
print (df)
   Id FirstName     LastName
0  12    Jannie   Pretorious
1  15      Elsa  Van Niekerk
2  14      Koos

详细信息:

print (df['LastName'].str.count(' '))
0    0
1    1
2    5
Name: LastName, dtype: int64    

替代方案:

df['LastName'] = df['LastName'].mask(df['LastName'].str.split().str.len().sub(1) > 2, '')

关于python - 如果值有两个以上空格,Pandas 会替换 df 中的行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59983587/

相关文章:

python - 如何在 Python 中将二进制向量旋转到最小值

python - Pandas join() 有效,但 concat() 失败

python - pandas 中涉及两列的聚合

python - 从具有日期范围的 DataFrame 创建 Pandas 每日聚合时间序列

python - pymysql callproc() 似乎影响后续选择

python - 比较列表的列表并将某些元素写入新列表

python - Discord 机器人将嵌入消息发送到另一个 channel

python - Matplotlib 中的 Unicode 字符串注释

python - 我可以从雅虎财经加载多个股票行情,但在将其保存到 csv 之前添加新列时遇到问题

python - 将 where 与 pandas 和分类列一起使用时出错