【发布时间】:2018-02-03 01:38:55
【问题描述】:
我正在尝试在 pandas 数据框中进行字符串替换。需要遍历各个列,因此它基本上是一系列替换:
In [105]: df = pd.DataFrame([['0 - abc', 1, 5], ['0 - abc - xyz', 2, 3]], columns=['col1','col2','col3'])
In [106]: df
Out[106]:
col1 col2 col3
0 0 - abc 1 5
1 0 - abc - xyz 2 3
In [107]: for col in df.columns:
...: df[col] = df[col].replace(to_replace='".*"|^0', value=df['col3'], inplace=False, regex=True)
...:
In [108]: df
Out[108]:
col1 col2 col3
0 5 1 5
1 3 2 3
我期望的结果不是上面的 df,而是:
In [110]: df_result
Out[110]:
col1 col2 col3
0 5 - abc 1 5
1 3 - abc - xyz 2 3
也就是说,在 '0 - abc' 中,只有开头的 '0' 应该被替换为 '5' 而不是整个字符串。
我的正则表达式中缺少什么?有没有另一种方法可以在熊猫中完成这种字符串替换?谢谢。
【问题讨论】:
标签: python regex pandas dataframe series