2016-04-08 18 views
2

Lassen Sie sich das folgende Beispiel nehmen DataFramePython - Pandas - split Textspalte ohne Trennzeichen in mehreren Spalten

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 

Ich mag würde folgendes Ergebnis haben, wo alle Ziffern in der Spalte b auseinander aufgeteilt sind.

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

Antwort

2

Sie können den Typ str gegossen und dann applylist eine Liste der Zeichen zu machen, dann eine Series konstruieren so gibt er eine df, die Sie als neue Spalten hinzufügen zurück kann:

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

Sie können 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 
verwenden
Verwandte Themen