在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
答案 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?上阅读更多内容。