在python pandas dataframe中,将列数据中的 "lastname, firstname "改为 "firstname lastname"。

问题描述 投票:0回答:1

我有一个python的pandas数据框架,由power bi数据源转换支持执行python脚本提供服务,其中一列由以下内容组成。lastname, firstname 而我需要它包括 firstname lastname.

我尝试了以下分割、反向、连接的方法,这对独立的字符串参数有效,但会产生 AttributeError: 'Series' object has no attribute 'split' 当我尝试在pandas数据框架中的列数据。

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'

搜索SO,我看到的点击做这个东西这种性质的在一个 绩优栏 并在 R名单 但我还没有找到任何关于python pandas数据框架中的列。

python pandas dataframe split reverse
1个回答
2
投票

在你的情况下,我们可以做 splitmap PS : ::-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

1
投票

结合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

0
投票

这个错误是由于变量的类型 type(df['full_name'])<class 'pandas.core.series.Series'>. 将其转换为列表,然后进行操作。

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()))
© www.soinside.com 2019 - 2024. All rights reserved.