如何在熊猫中将单列数据拆分为多列?

时间:2020-03-21 01:06:32

标签: python pandas

我有以下数据框

# import Pandas as pd 
import pandas as pd 

# create a new data frame 
df = pd.DataFrame({'Name': ['1234567 A: John Larter 123456  451151515 A: Robert Junior 4646466 9865513 A: Jonny Depp 9456561'], 
                  }) 
df

所有数据都堆积在单列上。我需要在分隔列中的每个A:之后获取数据

预期的DataFrame

# import Pandas as pd 
import pandas as pd 

# create a new data frame 
df = pd.DataFrame({'Name': ['A: John Larter 123456', 'A: Robert Junior 4646466', 'A: Jonny Depp 9456561'], 
                  }) 
df

3 个答案:

答案 0 :(得分:1)

您可以玩Series.str.split()并选择适合您需要的拆分模式。例如:

print(df.Name.str.split(r"\d+\sA:\s", expand = True).T)

                        0
0                        
1    John Larter 123456  
2  Robert Junior 4646466 
3      Jonny Depp 9456561

答案 1 :(得分:1)

使用Series.str.extract在列中提取模式:

d = df['Name'].str.extractall('(A:\s[A-Za-z]+\s[A-Za-z]+\s\d+)').to_numpy()
df = pd.DataFrame(d, columns=['Name'])

                       Name
0     A: John Larter 123456
1  A: Robert Junior 4646466
2     A: Jonny Depp 9456561

答案 2 :(得分:1)

借用Erfan的regexexplode一起使用findall

df['Name'].str.findall('(A:\s[A-Za-z]+\s[A-Za-z]+\s\d+)').explode()
0       A: John Larter 123456
0    A: Robert Junior 4646466
0       A: Jonny Depp 9456561
Name: Name, dtype: object