python - 如果列值包含特定子字符串,如何从列值中删除单词?

标签 python pandas dataframe

我有这样的行值:

         ID     MyColumn      
0        A      "Best Position 3 5"
1        B      "Healthy (unexpired)
2        C      "At-Large"
3        D      "Run 2 Position 1"
4        E      "Hello"
4        E      "None"
4        E      "Tomorrow"

我想扫描此表以查找包含子字符串“Position”的任何行,然后对于这些行仅保留 int 的第一个实例。我有 Lambda/正则表达式,用于获取值中 int 的第一个实例:

...str.replace(r'\D+', '').str.split()

但我不知道如何在子字符串出现的情况下应用它。

结果集:

         ID     MyColumn      
0        A      "3"
1        B      "Healthy (unexpired)
2        C      "At-Large"
3        D      "2"
4        E      "Hello"
4        E      "None"
4        E      "Tomorrow"

最佳答案

我们也许可以在此处使用 str.replace 和智能正则表达式:

regex = '.*?(\d+).*(?:Position|unexpired).*|.*?(?:Position|unexpired).*?(\d+).*'
df['new'] = df.loc['MyColumn'].str.replace(regex, '\1\2', case=False)

关于python - 如果列值包含特定子字符串,如何从列值中删除单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65335400/

相关文章:

python - 训练、验证、测试批量大小比率

r - 如何以更快的方式处理和组合列表中的 data.frames

python - Django 操作系统错误 : [Errno 13] Permission denied

python - 如何在 Python 中从 CSV 文件中提取 JSON 对象?

python - 如何使用 python 将单字符 ASCII 数据发送到串口

python - 如何选择多列和行

python - 根据条件从 pandas DF 中检索不同值的数量

python - Dask.dataframe 或替代方案 : Scalable way of dropping rows of low frequency items

python - 在 pandas 中读取时间值(时、分、秒、日、月、年)时,如何指定先到先得?

python - 在 Pandas 数据框中合并两列文本