Сплит панды колонка питон

Я работаю над Python 3.4, и у меня есть столбец данных pandas, содержащий:

0    [0.3785766661167145, -0.449486643075943, -0.15...]
1    [0.204025000333786, -0.3685399889945984, 0.231...]
2    [0.684576690196991, -0.5823000073432922, 0.269...]
3    [-0.02300500124692917, -0.22056499123573303, 0...]
Name: comments, dtype: object

и я хотел бы разделить его и превратить в несколько столбцов:

   column1               column2              ...columnx
0  0.3785766661167145    -0.449486643075943     last element in the first list
1  0.204025000333786     -0.3685399889945984    last element in the 2nd list
2  0.684576690196991     -0.5823000073432922    last element in the 3rd list
3  -0.02300500124692917  -0.22056499123573303   last element in the 4th list

Не могли бы вы мне помочь? заранее спасибо

4 ответа

Решение

Наличие DataFrame

df = pd.Series(
    {'comments': [list(np.random.randn(3).round()) for i in range(4)]
    }
)

где df=

comments
0    [1.0, -2.0, 0.0]
1   [1.0, -3.0, -0.0]
2  [-0.0, -0.0, -1.0]
3  [-2.0, -2.0, -2.0]

призвание

df2 = DataFrame(list(df['comments']))

вы получаете

     0    1    2
0  1.0 -2.0  0.0
1  1.0 -3.0 -0.0
2 -0.0 -0.0 -1.0
3 -2.0 -2.0 -2.0

Если в данных есть lists необходимость DataFrame конструктор с преобразованием столбца comments в numpy array от values + tolist:

print (type(df.loc[0, 'comments']))
<class 'list'>

df1 = pd.DataFrame(df['comments'].values.tolist())
#rename columns if necessary
df1 = df1.rename(columns = lambda x: 'column' + str(x + 1))
print (df1)
    column1   column2  column3
0  0.378577 -0.449487   -0.150
1  0.204025 -0.368540    0.231
2  0.684577 -0.582300    0.269
3 -0.023005 -0.220565    0.000

Используя пример Dataframe @ dDanny,

df = pd.DataFrame(
    {'comments': [list(np.random.randn(3).round()) for i in range(4)]
    })

Вы можете использовать apply для преобразования столбца, содержащего списки, в Dataframe.

 df.comments.apply(pd.Series)
Out[127]: 
     0    1    2
0 -2.0 -3.0 -1.0
1  1.0  0.0  1.0
2 -1.0 -1.0 -0.0
3  1.0  1.0  0.0

Прецедент:

import pandas as pd
df = pd.DataFrame({
               'var1':['20, -20, -50','30, 20, -50','40','30'],
               'var2':['10','50','60','70']
              })
print(df)

    var1           var2
0   20, -20, -50    10
1   30, 20, -50     50
2   40              60
3   30              70

pd.concat([df[['var2']], df['var1'].str.split(',', expand=True)], axis=1)

введите описание изображения здесь

Другие вопросы по тегам