【发布时间】:2021-09-03 15:10:41
【问题描述】:
假设我有一个带有欧洲语言日期的 DataFrame:
In[0]: df_date
Out[0]:
date
0 ene 1 2021
1 1 ene 2021
2 mar. 1 2021
3 5 mars. 2021
4 10 abr 2021
5 abr. 1 2021
我还有另一个带有相应字符串映射的 DataFrame
In[0]: df_translate
Out[0]:
foreign eng
0 ene jan
1 feb feb
2 mar mar
3 abr apr
4 may may
5 mars mar
我替换这些的方法通常是将映射 DataFrame 转换为字典,然后使用 Series.str.replace()
date_replace_dict = df_translate.set_index('foreign',drop=True).to_dict()['eng']
for k,v in date_replace_dict.items():
df_date['date'] = df['date'].str.replace(k,v,regex=False)
我发现这个过程有点慢,我想知道是否有更好/更快的pythonic方式。
我不能使用Series.replace() 方法,因为显然它需要对字符串进行精确匹配。
另外请注意,这是一个更普遍的问题,因为我碰巧对包含不同类型字符串和子字符串的不同类型的列进行了很多此操作。因此,要替换的子字符串不一定在字符串的开头或任何其他算法可确定的位置。
如果这是一个很好的解决方法,那就没问题了。但是 python 往往让我觉得每当我使用循环来实现某事时我做错了什么:)
【问题讨论】:
标签: python pandas string dataframe replace