Преобразовать список с именами столбцов и значениями во фрейм данных с сохранением значений - PullRequest
0 голосов
/ 19 октября 2018

У меня есть данные в виде списка, который выглядит как ['abc', 'bcd', 'cde', 1,2,3].Моя проблема заключается в том, что 'abc', 'bcd' и 'cde' являются именами столбцов, а 1,2,3 - значениями каждого столбца.

Как преобразовать список в фрейм данных, сохраняя имена столбцов и соответствующие имзначения?

Вот так мои данные выглядят в списке:

[ sepal_length  sepal_width  petal_length  petal_width  species
0            5.1          3.5           1.4          0.2        0
1            4.9          3.0           1.4          0.2        0
2            4.7          3.2           1.3          0.2        0
3            4.6          3.1           1.5          0.2        0
4            5.0          3.6           1.4          0.2        0
5            5.4          3.9           1.7          0.4        0]

Так что я не знаю, сохраняет ли внутри них структуру данных или нет.

Спасибозаранее!

Ответы [ 2 ]

0 голосов
/ 19 октября 2018
import pandas as pd
import numpy as np

nb_columns = 3
my_list = ['abc','bcd','cde',1,2,3]

# Extract the data from your list and reshape with the proper form (1 row, X columns)
data = np.reshape(my_list[nb_columns:], (1,nb_columns))

# Create a pandas Dataframe with your data and a list of columns name
my_pandas = pd.DataFrame(data, columns=my_list[:nb_columns])

РЕДАКТИРОВАТЬ: для нескольких строк

my_list = ['abc','bcd','cde',1,2,3,4,5,6]

# Try to count the number of rows present in the list
nb_row = int((len(my_list)-nb_columns)/nb_columns)

# Extract the data from your list and reshape with the proper form (N row, X columns)
data = np.reshape(my_list[nb_columns:], (nb_row, nb_columns))

Если у вас есть другие вопросы.

0 голосов
/ 19 октября 2018

Попробуйте это:

l = ['abc','bcd','cde',1,2,3]
keys = l[:len(l)//2]
values = [[e] for e in l[len(l)//2:]]
pd.DataFrame(dict(zip(keys,values)))

Возвращает

    abc     bcd     cde
0    1       2       3

Если у вас более одного значения в столбце:

l = ['abc','bcd','cde',1,2,3,4,5,6]
n_columns = 3
#or
n_columns = len([e for e in l if isinstance(e,str)])
keys = l[:n_columns]
values = [list() for _ in range(n_columns)]
for i,e in enumerate(l[n_columns:]):
    values[i%n_columns].append(e)
pd.DataFrame(dict(zip(keys,values)))

Возвращает

    abc     bcd     cde
0    1       2       3
1    4       5       6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...