我将字符串数据输入到我的python代码中。有些时间数据会带来额外的"和"或"或者例如
In [177]: %%timeit
...: from pandas.tseries.offsets import MonthEnd
...: def find_F(df1):
...: F = df2.loc[(df2.index > df1 + MonthEnd(1)) &
...: (df2.index < df1 + MonthEnd(4)), 'F']
...: return F.values[0]
...:
...: df1['F'] = df1['Expiry'].apply(find_F)
...:
100 loops, best of 3: 15.7 ms per loop
In [178]: %%timeit
...: df = pd.merge(df1.assign(A=1), df2.reset_index().assign(A=1)[['A','Expiry','F']], on='A')
...: mask = (df['Expiry_y'] > df['Expiry_x'] + MonthEnd(1)) & \
...: (df['Expiry_y'] < df['Expiry_x'] + MonthEnd(4))
...:
...: df = df[mask].drop('Expiry_y', 1)
...:
100 loops, best of 3: 9.48 ms per loop
在这种情况下,我需要删除最后一个&#34;和&#34; &安培;最终结果将是
Tom and Mark and
但是当数据会像这样出现时
Tom and Mark
然后我将在不删除&#34;和&#34;
的情况下考虑数据你能建议我怎么做吗?
答案 0 :(得分:1)
使用str.strip()
函数和字符串切片:
lst = ['Tom and Mark and ', 'Harry and John', 'Bland and']
for s in lst:
s = s.strip()
s = s[:-4] if s[-4:] == ' and' else s
print(s)
输出:
Tom and Mark
Harry and John
Bland
答案 1 :(得分:1)
您可以使用正则表达式
import re
s = re.sub('\s+and\s*$', '', s)