Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列中单词的倒序_Python_Regex_Pandas - Fatal编程技术网

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) 但这只有在我知道子字符串的数量时才起作用,

我有一个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)

但这只有在我知道子字符串的数量时才起作用,而我事先不知道子字符串的数量。

您需要的三个步骤是:

  • 拆线
  • 把绳子倒过来
  • 合二为一
  • 第一步和第三步可以使用and实现,因此 你可以做:

     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