Python 列中单词的倒序
我有一个python中带有列的数据框:Python 列中单词的倒序,python,regex,pandas,Python,Regex,Pandas,我有一个python中带有列的数据框: df columnA Apple Banana Orange Citron Pineapple 如何根据空格保留子字符串的顺序?结果应该是: columnA Banana Apple Pineapple Citron Orange 现在,我只使用: df['columnA'] = df['columnA'].replace(r'(\s+).(\s+).(\s+)',r'\3\2\1',regex=True) 但这只有在我知道子字符串的数量时才起作用,
df
columnA
Apple Banana
Orange Citron Pineapple
如何根据空格保留子字符串的顺序?结果应该是:
columnA
Banana Apple
Pineapple Citron Orange
现在,我只使用:
df['columnA'] = df['columnA'].replace(r'(\s+).(\s+).(\s+)',r'\3\2\1',regex=True)
但这只有在我知道子字符串的数量时才起作用,而我事先不知道子字符串的数量。您需要的三个步骤是:
df.A.str.split().apply(lambda x: ' '.join(x[::-1]))
输出
0 Banana Apple
1 Pineapple Citron Orange
Name: A, dtype: object
另一种选择是使用:
对于这项任务,我将使用列表理解,并避免使用
str
accessor
df['new'] = [' '.join(s.split()[::-1]) for s in df['columnA']]
df['new'] = [' '.join(s.split()[::-1]) for s in df['columnA']]
df = pd.concat([df]*10000)
%timeit [' '.join(s.split()[::-1]) for s in df.col]
100 loops, best of 3: 12.9 ms per loop
%timeit df.col.str.split().apply(lambda x: ' '.join(x[::-1]))
10 loops, best of 3: 25.3 ms per loop
%timeit df.col.str.split().str[::-1].agg(' '.join)
10 loops, best of 3: 27.4 ms per loop
%timeit df.col.str.split().apply(reversed).apply(' '.join)
10 loop, best of 3: 28.7 ms per loop