Pandas: 拆分 and/or 更新列,基于不一致的数据?

Pandas: Split and/or update columns, based on inconsistent data?

所以我有一个包含棒球队名称的列,我想将它分成 2 个新列,分别包含城市名称和球队名称。

Team
New York Giants
Atlanta Braves
Chicago Cubs
Chicago White Sox

我想得到这样的东西:

Team City Franchise
New York Giants New York Giants
Atlanta Braves Atlanta Braves
Chicago Cubs Chicago Cubs
Chicago White Sox Chicago White Sox

到目前为止我尝试了什么?

有 3 种不同的情况:

  1. 标准一(例如亚特兰大勇士队)
  2. 有 2 个字符串的城市(例如纽约巨人队)
  3. 带有 2 个字符串的球队名称(例如 Chicago White Sox)

我想做什么?

解决这个问题的好方法是什么?

谢谢!

使用:

#part of cities with space
cities = ['York','Angeles']

#test rows
m = df['Team'].str.contains('|'.join(cities))

#first split by first space to 2 new columns
df[['City','Franchise']] = df['Team'].str.split(n=1, expand=True)
#split by second space only filtered rows
s = df.loc[m, 'Team'].str.split(n=2)
 
#update values
df.update(pd.concat([s.str[:2].str.join(' '), s.str[2]], axis=1, ignore_index=True).set_axis(['City','Franchise'], axis=1))
print (df)
                Team      City  Franchise
0    New York Giants  New York     Giants
1     Atlanta Braves   Atlanta     Braves
2       Chicago Cubs   Chicago       Cubs
3  Chicago White Sox   Chicago  White Sox