使用“更改列数据”;“姓氏,姓氏”;至;firstname lastname";在python数据帧中

使用“更改列数据”;“姓氏,姓氏”;至;firstname lastname";在python数据帧中,python,pandas,dataframe,split,reverse,Python,Pandas,Dataframe,Split,Reverse,我有python pandas dataframe,由power bi数据源转换支持提供,用于执行python脚本,其中一列由lastname、firstname组成,我需要它由firstname lastname组成 我尝试了以下拆分、反转、联接方法,该方法适用于独立的字符串参数,但在数据帧中的列数据上尝试时会生成AttributeError:“Series”对象没有属性“split” name = 'LastName, FirstName' ' '.join(reversed(name.sp

我有python pandas dataframe,由power bi数据源转换支持提供,用于执行python脚本,其中一列由
lastname、firstname
组成,我需要它由
firstname lastname
组成

我尝试了以下拆分、反转、联接方法,该方法适用于独立的字符串参数,但在数据帧中的列数据上尝试时会生成
AttributeError:“Series”对象没有属性“split”

name = 'LastName, FirstName'
' '.join(reversed(name.split(', ')))
# output = 'FirstName LastName'

import pandas as pd
df = pd.DataFrame({'full_name': ['doe, john', 'smith, kate', 'jones, susan', 'edwards, jack' ],
                   'num_legs': [2, 4, 8, 0],
                   'num_wings': [2, 0, 0, 0],
                   'num_specimen_seen': [10, 2, 1, 8]},
                   index=['falcon', 'dog', 'spider', 'fish'])
df
df['full_name'] = ' '.join(reversed(df['full_name'].split(', ')))
# output = AttributeError: 'Series' object has no attribute 'split'

正在搜索,因此我看到了在和中执行此操作的命中率,但在python pandas数据帧中的列中,我还没有找到任何内容。

在您的情况下,我们可以使用
映射
PS:
:-1
进行拆分

name = 'LastName, FirstName'
' '.join(reversed(name.split(', ')))
# output = 'FirstName LastName'

import pandas as pd
df = pd.DataFrame({'full_name': ['doe, john', 'smith, kate', 'jones, susan', 'edwards, jack' ],
                   'num_legs': [2, 4, 8, 0],
                   'num_wings': [2, 0, 0, 0],
                   'num_specimen_seen': [10, 2, 1, 8]},
                   index=['falcon', 'dog', 'spider', 'fish'])
df
df['full_name'] = ' '.join(reversed(df['full_name'].split(', ')))
# output = AttributeError: 'Series' object has no attribute 'split'
df.full_name=df.full_name.str.split(', ').map(lambda x : ' '.join(x[::-1]))
df.full_name
falcon        john doe
dog         kate smith
spider     susan jones
fish      jack edwards
Name: full_name, dtype: object

错误是因为变量的类型
type(df['full\u name'])
。将其转换为列表,然后操作:

import pandas as pd
df = pd.DataFrame({'full_name': ['doe, john', 'smith, kate', 'jones, susan', 'edwards, jack' ],
        'num_legs': [2, 4, 8, 0],
        'num_wings': [2, 0, 0, 0],
        'num_specimen_seen': [10, 2, 1, 8]},
        index=['falcon', 'dog', 'spider', 'fish'])

print(map(lambda x: x.split(',')[::-1], df['full_name'].tolist()))

pandas的字符串方法组合在这里可能会有所帮助:为了提高速度,我建议在python本身中运行列表理解。Pandas中提供的字符串方法主要是为了方便/简单

df['full_name'] = df.full_name.str.split(",").str[::-1].str.join(",")


          full_name     num_legs    num_wings   num_specimen_seen
falcon     john,doe         2           2             10
dog        kate,smith       4           0             2
spider     susan,jones      8           0             1
fish       jack,edwards     0           0             8

我想我的解决方案会更快。。。但是在50k个条目上分析它这个解决方案花了2秒,我的是3.4(用timeit运行10次),这要感谢响应,当我运行这个时,我得到了
的输出和执行
df.full_name
之后的输出看起来没有变化