首页 > 解决方案 > 如何反转熊猫数据框中的字符串?

问题描述

我的数据框就像,

ID   col1
1    Michael Owen
2    Stephen Curry
3    Messi, Lionel
4    James, LeBron

我试图颠倒那些被分割的名字的顺序", "

我的代码是,

df['col1'] = df.col1.str.split().apply(lambda x: ', '.join(x[::-1]))

但它会反转所有行,即使名称被" ".

ID   col1
1    Owen, Michael
2    Curry, Stephen
3    Lionel, Messi
4    LeBron, James

然后我尝试了

df.loc[df['col1'].str.contains(", ").split("col1")].apply(lambda x: ', '.join(x[::-1]))

它给了我一个错误,

AttributeError: 'Series' object has no attribute 'split'

我怎么解决这个问题?

标签: pythonstringpandasdataframe

解决方案


使用Series.where

df['col1']=( df.col1.str.split()
              .apply(lambda x: ', '.join(x[::-1]).rstrip(','))
              .where(df['col1'].str.contains(','),df['col1']) )

   ID           col1
0   1   Michael Owen
1   2  Stephen Curry
2   3  Lionel, Messi
3   4  LeBron, James

如果你想放弃','

df['col1']=( df.col1.str.split()
              .apply(lambda x: ', '.join(x[::-1]).rstrip(','))
              .where(df['col1'].str.contains(','),df['col1']) 
              .str.replace(',','') )

   ID           col1
0   1   Michael Owen
1   2  Stephen Curry
2   3  Lionel  Messi
3   4  LeBron  James

推荐阅读