将列中的文本拆分为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
我不明白为什么它不能加在一起!!
答案 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