去除熊猫列中特定字符左侧的字符

ojp*_*ojp 3 regex python-3.x pandas

我有以下数据:

key German
0   0:- Profile 1
1   1:- Archetype   Realist*in
2   2:- RIASEC Code:    R- Realistic
3   3:- Subline Deine Stärke? Du bleibst dir selber treu.
4   4:- Copy    Dein Erfolg basiert auf deiner praktischen Ver...
Run Code Online (Sandbox Code Playgroud)

在“键”列中,我想删除后面的数字和冒号破折号。此顺序始终相同(从左侧开始)。因此,对于第一行,我想删除“0:-”,而只保留“配置文件 1”。我正在努力寻找正确的正则表达式来做我想做的事。最初我尝试了以下方法:

df_json['key'] = df_json['key'].map(lambda x: x.strip(':- ')[1])
Run Code Online (Sandbox Code Playgroud)

但是,这种方法限制太多,因为该字段中可能有多个词。

我想使用pd.Series.str.replace(),但我无法找出正确的正则表达式来达到预期的结果。任何帮助将不胜感激。

Rav*_*h13 5

使用您显示的样本,请尝试以下操作。replace在这里使用Pandas 的功能。简单的解释是,将replacePandas 的函数应用于German数据帧的列,然后使用正则表达式^[0-9]+:-\s+将值替换为 NULL。

df['German'].replace('(^[0-9]+:-\s+)','', regex=True)
Run Code Online (Sandbox Code Playgroud)

解释:

  • ^[0-9]+: 匹配起始数字后跟冒号。
  • :-\s+: 匹配冒号,后跟-1 个或多个空格。