Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas-使用now分隔符对列进行数据转换_Python_Pandas_Dataframe_Split - Fatal编程技术网

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('')

非常好用,谢谢!