2016-04-08 3 views
2

Давайте рассмотрим следующий пример DataFrameпитона - панды - разбивка текст колонка, без разделителей в нескольких столбцов

import pandas as pd 
df = pd.DataFrame([['foo', 2348], ['bar', 6132], ['baz',5843]], columns = list('ab')) 

    a  b 
0 foo 2348 
1 bar 6132 
2 baz 5843 

Я хотел бы иметь следующий результат, где все цифры в колонке b расщеплены на части.

 a b c d e 
0 foo 2 3 4 8 
1 bar 6 1 3 2 
2 baz 5 8 4 3 

ответ

2

Вы можете привести тип к str, а затем applylist, чтобы сделать список символов, а затем построить Series так он возвращает DF, который можно добавить обратно в новые столбцы:

In [13]: 
df[['b','c','d','e']] = df['b'].astype(str).apply(lambda x: pd.Series(list(x))).astype(int) 
df 

Out[13]: 
    a b c d e 
0 foo 2 3 4 8 
1 bar 6 1 3 2 
2 baz 5 8 4 3 
0

Вы можете использовать indexing with str:

#convert column b to string 
df['b'] = df.b.astype(str) 

#indexing with str 
df['c'] = df.b.str[1] 
df['d'] = df.b.str[2] 
df['e'] = df.b.str[3] 
df['b'] = df.b.str[0] 

#if need convert columns to int 
df[['b','c','d','e']] = df[['b','c','d','e']].astype(int) 
print df 
    a b c d e 
0 foo 2 3 4 8 
1 bar 6 1 3 2 
2 baz 5 8 4 3 
Смежные вопросы