我们采用以下示例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
答案 0 :(得分:2)
您可以将类型转换为str
,然后apply
list
来制作字符列表,然后构建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
答案 1 :(得分: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