首页 > 解决方案 > 如何在 python 上使用自定义拆分创建新列

问题描述

我有一个这样的数据框:

在此处输入图像描述

我想拆分注释列并创建 3 个由名称、国家和数字组成的新列。

注释的格式相同,只是可以有名字或全名。

我试图分裂并从右边开始。输入数字,然后国家和剩下的任何内容都应输入“名称”列。

新的 DataFrame 看起来像这样:

在此处输入图像描述

标签: pythonpandas

解决方案


我相信只需要最后两个空格来分割Series.str.rsplitn=2

df[['Name','Country','Digit']] = df['Note'].str.rsplit(n=2, expand=True)

也等于:

df[['Name','Country','Digit']] = df['Note'].str.rsplit(' ', n=2, expand=True)    

证明:

import pandas as pd

df = pd.DataFrame({
    'ID': [1,2,3,4],
    'Note': [
        'Sam John Brazil 2', 
        'Simion Canada 4',
        'Sam John Brazil 1',
        'Henry G. Hilson Spain 3']
})

df[['Name','Country','Digit']] = df['Note'].str.rsplit(n=2, expand=True)

print(df)

回报:

   ID                     Note             Name Country  Digit
0   1        Sam John Brazil 2         Sam John  Brazil      2
1   2          Simion Canada 4           Simion  Canada      4
2   3        Sam John Brazil 1         Sam John  Brazil      1
3   4  Henry G. Hilson Spain 3  Henry G. Hilson   Spain      3

添加这个:(如果数字列是数字)

df['Digit'] = pd.to_numeric(df['Digit'], errors='coerce')

细节:

#print(df['Note'].str.rsplit(n=2, expand=True))

                 0       1  2
0         Sam John  Brazil  2
1           Simion  Canada  4
2         Sam John  Brazil  1
3  Henry G. Hilson   Spain  3

推荐阅读