将 "lastname, firstname" 中的列数据更改为 python pandas 数据框中的 "firstname lastname"

changing column data with "lastname, firstname" to "firstname lastname" in python pandas dataframe

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

组成

我尝试了以下拆分、反转、连接方法,该方法适用于独立的字符串参数,但当我在 pandas 数据帧中的列数据上尝试时生成 AttributeError: 'Series' object has no attribute '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'

搜索所以我看到在 and in a 中做这种性质的事情的命中,但我还没有找到 python pandas 数据框中的列。

在你的情况下,我们可以用 map PS 来做 split::-1 这里的顺序是颠倒的

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_name'])<class 'pandas.core.series.Series'>。转成list再操作:

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 中的字符串方法主要是为 convenience/simplicity.

提供的
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