Python: разделить столбец данных pandas, содержащий список и значение, на два столбца - PullRequest
0 голосов
/ 07 октября 2019

У меня есть фрейм данных Pandas со столбцом, который содержит список и значение: ([z, z, z, z, m, ., c, l, u, b, .], 0.0)

Как разделить этот столбец на два столбца, которые я добавляю в фрейм данных? Вывод, который я хочу: один столбец будет содержать список, другой столбец будет содержать значение. Например:

[z, z, z, z, m, ., c, l, u, b, .] и 0.0

Я пробовал str.split(...,expand=True,), но вывод - это просто столбец NaN. Я не могу использовать разделитель запятых, и ], оба производят один столбец NaN, а не столбец списков и столбец значений.

Вот 4 строки столбца моего фрейма данных Pandas, которыеЯ пытаюсь манипулировать.

X['set']
1                  ([z, z, z, z, m, ., c, l, u, b, .], 0.0)
2                  ([z, z, z, z, g, ., c, l, u, b, .], 0.0)
3              ([z, z, z, z, cy, s, ., l, o, a, n, .], 0.0)
4                        ([z, z, z, x, c, ., u, s, .], 0.0)

Ответы [ 4 ]

1 голос
/ 07 октября 2019

Мне удалось выяснить это на основе дедукции, используя ответы других пользователей.

pd.DataFrame(X['set'].tolist(), index=df.index)

Связанный пост: как разбить столбец кортежей в панде dataframe

0 голосов
/ 07 октября 2019

Вам просто нужно немного гимнастики:

def separate(x):
    closing_bracket_index = x.index(']')
    list_vals = x[:closing_bracket_index+1]
    val = x[closing_bracket_index+3:]

    return pd.Series([list_vals, val], index=['list', 'val'])

X['set'].apply(separate)
0 голосов
/ 07 октября 2019

Надеюсь, что это работает

import numpy as np
import pandas as pd

a = (['g','f'],0.0)
b = (['d','e'],0.1)
df = pd.DataFrame({'col':[a,b]})
df

Out[1]: 
             col
0  ([g, f], 0.0)
1  ([d, e], 0.1)

def split_val(col):
    list_val = col[0]
    value    = col[1]
    return pd.Series([list_val, value], index=['list', 'val'])


df[['list_val','value']] = df['col'].apply(split_val) 
df

Out[2]: 
             col list_val  value
0  [[g, f], 0.0]   [g, f]    0.0
1  [[d, e], 0.1]   [d, e]    0.1
0 голосов
/ 07 октября 2019

вы можете попробовать сделать разделитель ],?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...