Python Pandas-使用now分隔符对列进行数据转换
我有一个熊猫数据框架,它由运动员姓名和体育比赛的统计数据组成。唯一的数据源以以下格式列出它们:Python Pandas-使用now分隔符对列进行数据转换,python,pandas,dataframe,split,Python,Pandas,Dataframe,Split,我有一个熊猫数据框架,它由运动员姓名和体育比赛的统计数据组成。唯一的数据源以以下格式列出它们: # PLAYER M FG 3PT FT REB AST STL PTS 34 BLAKE Brad 38 17 5 6 3 0 3 0 24 12 JONES Ben 42 10 2 6 1 0 4 1 12 8 SMITH Todd J. 16 9 1
# PLAYER M FG 3PT FT REB AST STL PTS
34 BLAKE Brad 38 17 5 6 3 0 3 0 24
12 JONES Ben 42 10 2 6 1 0 4 1 12
8 SMITH Todd J. 16 9 1 4 1 0 3 2 18
5 MAY-DOUGLAS James 9 9 0 3 1 0 2 1 6
44 EDLIN Taylor 12 6 0 5 1 0 0 1 8
玩家的名字顺序相反:姓Firstname。我需要将名字转换为firstname lastname的当前顺序。因此,具体而言:
BLAKE Brad -> Brad BLAKE
SMITH Todd J. -> Todd J. SMITH
MAY-DOUGLAS James -> James MAY-DOUGLAS
字母的大小写并不重要,但是我认为它们可能被用来区分名字和姓氏。我知道所有姓氏都是大写的,即使它们包含连字符。名字将始终是句子大小写(第一个字母大写,其余字母小写)。但是,有些名字包括中间名,以区分同名玩家。我了解了如何将空格字符用作删除器,并可能使用“拆分”转换,但对于中间名字符来说,这很困难
我可以使用熊猫公司提供的功能来实现这一点吗
所需输出为:
# PLAYER M FG 3PT FT REB AST STL PTS
34 Brad BLAKE 38 17 5 6 3 0 3 0 24
12 Ben JONES 42 10 2 6 1 0 4 1 12
8 Todd J. SMITH 16 9 1 4 1 0 3 2 18
5 James MAY-DOUGLAS 9 9 0 3 1 0 2 1 6
44 Taylor EDLIN 12 6 0 5 1 0 0 1 8
尝试按第一个空格分割,然后反转列表并用空格连接列表值
df['PLAYER']=df['PLAYER'].str.split(“”,1.str[::-1.str.join(“”))
要仅反转某些名称,可以使用isin
然后使用布尔索引
names=['BLAKE Brad','SMITH Todd J.','MAY-DOUGLAS James']
mask=df['PLAYER'].isin(名称)
df.loc[mask,'PLAYER']=df.loc[mask,'PLAYER'].str.split('-',1.str[::-1.str.join('')
非常好用,谢谢!