Python在列中拆分文本

时间:2017-11-24 14:49:17

标签: python pandas

将列中的文本拆分为DataFrame中的多行

df = pd.DataFrame({'age':['34','22','19'],'Ticket':['23:44:55','66:77:88','43:68:05 56:34:12'],'PlusOne':['0','0','1'],})

拆分第三行中的两个值

ticket_series = df['Ticket'].str.split(' ').apply(pd.Series, 1).stack()

摆脱堆栈:  删除级别以与DataFrame对齐

ticket_series.index = ticket_series.index.droplevel(-1)
ticketdf = pd.DataFrame(ticket_series)
del df['Ticket']
df.join(ticketdf)
df

我不明白为什么它不能加在一起!!

1 个答案:

答案 0 :(得分:0)

你很近,DataFrame构造函数不是必需的,只需要name of Series列名:

ticket_series = df['Ticket'].str.split(' ').apply(pd.Series, 1).stack()
ticket_series.index = ticket_series.index.droplevel(-1)
ticket_series.name = 'new'

Series的另一种解决方案:

ticket_series = (df['Ticket'].str.split(expand=True)
                             .stack()
                             .reset_index(level=1, drop=True)
                             .rename('new'))

print (ticket_series)
0    23:44:55
1    66:77:88
2    43:68:05
2    56:34:12
Name: new, dtype: object


print (df.drop('Ticket', 1).join(ticket_series).reset_index(drop=True))
  PlusOne age       new
0       0  34  23:44:55
1       0  22  66:77:88
2       1  19  43:68:05
3       1  19  56:34:12