将 "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
我有 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'
搜索所以我看到在
在你的情况下,我们可以用 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