我有这样的行值:
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/