我有一个数据集,其中两列的字符串值为“LastName, FirstName”。我很乐意用“FirstName Last Name”替换它们。他们是这样的:
conductorName composerName conduct_count
0 Abbado, Claudio Berg, Alban 2
1 Abbado, Claudio Berlioz, Hector 1
2 Abbado, Claudio Bernstein, Leonard 1
3 Abbado, Claudio Brahms, Johannes 2
4 Abbado, Claudio Bruckner, Anton 1
我试过:
data = ["".join(n.split(", ")[::-1]) for n in data["composerName"]]
这很好地给了我一个 composerName 列表,但现在我丢失了 pandas 数据框(这里是错误 ----> 1 data.head()
AttributeError: 'list' 对象没有属性 'head'
)
我也试过:
数据中的 n ["composerName"]:
"".join(n.split(", ")[::-1])
但是,这不会改变 LastName 和 FirstName 的顺序
我很乐意保留 pandas 数据框以供分析。我感谢任何帮助。谢谢!!
最佳答案
您可以使用向量化的 str.split
在分隔符上拆分,然后使用切片语义反转列表内容,然后使用 str.join
再次加入:
In [35]:
df['ComposerFirstLastName'] = df['composerName'].str.split(', ').str[::-1].str.join(' ')
df['ConductorFirstLastName'] = df['conductorName'].str.split(', ').str[::-1].str.join(' ')
df
Out[35]:
composerName conductorName conductor_count FirstLastName \
index
0 Abbado, Claudio Berg, Alban 2 Claudio Abbado
1 Abbado, Claudio Berlioz, Hector 1 Claudio Abbado
2 Abbado, Claudio Bernstein, Leonard 1 Claudio Abbado
3 Abbado, Claudio Brahms, Johannes 2 Claudio Abbado
4 Abbado, Claudio Bruckner, Anton 1 Claudio Abbado
ComposerFirstLastName ConductorFirstLastName
index
0 Claudio Abbado Alban Berg
1 Claudio Abbado Hector Berlioz
2 Claudio Abbado Leonard Bernstein
3 Claudio Abbado Johannes Brahms
4 Claudio Abbado Anton Bruckner
关于python - 如何在不丢失数据框的情况下在 Pandas 中编辑姓氏、名字的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38330278/