熊猫-在字符串列中某个字符之后“剪切”所有内容并将其粘贴到列的开头

时间:2019-01-31 02:19:10

标签: python pandas dataframe

在pandas数据框字符串列中,我要抓住某个字符后的所有内容,并将其放在该列的开头,同时剥离该字符。做到这一点的最有效方法/实现这一目标的最简单方法是什么?

输入数据框:

>>> df = pd.DataFrame({'city':['Bristol, City of', 'Newcastle, City of', 'London']})
>>> df
                 city
0    Bristol, City of
1  Newcastle, City of
2              London
>>>

我想要的数据帧输出:

                city
0    City of Bristol
1  City of Newcastle
2             London

1 个答案:

答案 0 :(得分:2)

假设每个字符串最多只有两段,则可以拆分,反转和合并:

Unable to locate a matching ACE for passed permissions and SIDs

如果有两个以上的逗号,请仅在第一个逗号之间进行分割:

df.city.str.split(', ').str[::-1].str.join(' ')

0      City of Bristol
1    City of Newcastle
2               London
Name: city, dtype: object

另一个选项是df.city.str.split(', ', 1).str[::-1].str.join(' ') 0 City of Bristol 1 City of Newcastle 2 London Name: city, dtype: object

str.partition

这总是只在第一个逗号分割。


如果需要性能,还可以使用列表理解:

u = df.city.str.partition(', ')
u.iloc[:,-1] + ' ' + u.iloc[:,0]

0      City of Bristol
1    City of Newcastle
2               London
dtype: object

您为什么要关心循环解决方案?使用字符串/正则表达式函数时,for循环很快(至少比pandas更快)。您可以在For loops with pandas - When should I care?上阅读更多内容。