我有以下数据框
# 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
答案 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的regex
与explode
一起使用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