我如何创建一个新的列到我的数据框架,从另一列的数据拉和重新排序?



我有一个数据框架,其中一列同时包含姓和名。我需要以某种方式创建另一个列,它将名称连接起来,如下所示:

约翰·史密斯 ---------------------------------& gt;smithjo01

基本上是他们姓氏的前五个字母和他们名字的前两个字母在一起。然后给他们一个以01开头的数字。如果他们是第二个有相同名字的人,他们被赋予02,以此类推。

同样,如果他们的姓只有四个或更少的字母,他们包括所有可能的字母,并像平常一样使用名字。例如:

彼得·潘 ---------------------------------& gt;panpe01

任何想法?

完整代码

import pandas as pd
data = ({
'Name': ["John Smith", "Peter Pan", "John Smith", "Peter Pan", "John Smith", "Peter Pan", "John Smith", "Peter Pan", "John Smith", "Peter Pan",],
})
# Converting data to dataframe
df = pd.DataFrame(data)
df[['FirstName', 'LastName']] = df.Name.str.split(expand=True)
# Combining Last name and 2 leters of First name
df["UID"] = df["LastName"].astype(
str).str.lower()+df["FirstName"].astype(str).str.lower().str[:2]
df["UID"] = df["UID"] + 
df.groupby('UID').cumcount().add(1).astype(str).str.zfill(
2)
print(df)

Name FirstName LastName        UID
0  John Smith      John    Smith  smithjo01
1   Peter Pan     Peter      Pan    panpe01
2  John Smith      John    Smith  smithjo02
3   Peter Pan     Peter      Pan    panpe02
4  John Smith      John    Smith  smithjo03
5   Peter Pan     Peter      Pan    panpe03
6  John Smith      John    Smith  smithjo04
7   Peter Pan     Peter      Pan    panpe04
8  John Smith      John    Smith  smithjo05
9   Peter Pan     Peter      Pan    panpe05

希望这对你有帮助。快乐编码:)

相关内容

最新更新