Отделяйте каждую строку в элементе в списке -Python - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть список элементов, как показано ниже:

['1.3 2.4 3.6','4.6 5 6.8','6.5 7.2 8.1']

, где каждый элемент имеет несколько наблюдений, разделенных пробелом.

Я хочу преобразовать это в dataframe.Я застрял, как отделить каждое наблюдение и сформировать dataframe?

Ответы [ 4 ]

0 голосов
/ 04 февраля 2019

сначала вам нужно отделить каждый элемент списка, а затем вы можете снова разделить их и преобразовать в число с плавающей точкой

data = ['1.3 2.4 3.6','4.6 5 6.8','6.5 7.2 8.1']
result = []
for row in data:
    value_list = row.split(' ') 
    result += value_list

result = list(map(float, result))

print(result)

Выше приведенный код все еще можно оптимизировать с помощью Python, но он намеренно упрощендля вас, чтобы понять поток.

0 голосов
/ 04 февраля 2019

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

import pandas as pd

l = ['1.3 2.4 3.6','4.6 5 6.8','6.5 7.2 8.1']

columns = ['col1', 'col2', 'col3']

data = [[float(x) for x in e.split()] for e in l]

df = pd.DataFrame(data, columns=columns)

print(df)
0 голосов
/ 04 февраля 2019
import pandas as pd

lst = ['1.3 2.4 3.6','4.6 5 6.8','6.5 7.2 8.1']

d = [[float(l) for l in i.split()] for i in lst]

col = 'a b c'.split()

df = pd.DataFrame(data = d, columns= col )
print(df)

split() разбивает строку в список, по умолчанию в качестве разделителя используется пробел

d = [[float(l) for l in i.split()] for i in lst]

здесь вы используете понимание списка, в котором вы итерируетекаждый элемент в lst и разбиение строки

'1.3 2.4 3.6' на список [1.3, 2.4, 3.6] и использование float(l) для ввода типа cast to float

Вывод:

     a    b    c
0  1.3  2.4  3.6
1  4.6  5.0  6.8
2  6.5  7.2  8.1
0 голосов
/ 04 февраля 2019

Вы можете сделать это с помощью:

  • split функции для разделения строки
  • float функции для преобразования str в число с плавающей точкой
  • понимания списка

Однострочная инструкция может делать то, что вы хотите

data = ['1.3 2.4 3.6','4.6 5 6.8','6.5 7.2 8.1']
dataframe = [[float(x) for x in e.split()] for e in data]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...