от двух массивов до одного фрейма данных python - PullRequest
2 голосов
/ 18 июня 2020

Я пытаюсь поместить свои значения в два массива, а затем сделать из них фрейм данных. Для этого я использую python, numpy и pandas.

мои массивы:

k = [7.0, 8.0, 6.55, 7.0000001, 10.12]
p = [6.94, 9.0, 4.44444, 13.0, 9.0876]

, и я хотел бы поместить их в pandas фрейм данных. Когда я распечатываю свой фрейм данных, я хотел бы увидеть следующее:

    a     b    c     d     e
k  7.0   8.0  6.6   7.0  10.1
p  6.9   9.0  4.4  13.0   9.1

Как я могу это сделать?

Я прочитал несколько связанных вопросов, но не могу понять. Одна из ошибок говорит, что индексы не должны быть кортежами, но, как видите, у меня нет кортежей

Ответы [ 2 ]

8 голосов
/ 18 июня 2020

Вы всегда можете использовать в качестве входных данных для pd.DataFrame список списков, который будет генерировать желаемый результат:

k = [7.0, 8.0, 6.55, 7.0000001, 10.12]
p = [6.94, 9.0, 4.44444, 13.0, 9.0876]

pd.DataFrame([k,p],columns=['a','b','c','d','f'],index=['k','p'])

    a   b   c   d   e
k   7.00    8.0 6.55000 7.0 10.1200
p   6.94    9.0 4.44444 13.0    9.0876

И если вы хотите округлить:

pd.DataFrame([k,p],columns=['a','b','c','d','f'],index=['k','p']).round()

    a   b   c   d   e
k   7.0 8.0 7.0 7.0 10.0
p   7.0 9.0 4.0 13.0    9.0

для динамических c столбцов:

from string import ascii_lowercase
pd.DataFrame([k,p],columns=list(ascii_lowercase[:len(k)]),index=['k','p']).round()
0 голосов
/ 18 июня 2020

Благодаря другим ответам я получил следующее:

df = pd.DataFrame([k,p],columns=['a','b','c','d','f'],index=['k','p']).round(decimals=2)

Пошаговое описание:

1) поместите массивы в другой массив, написав array = [k,p]. Распечатав его, результат должен выглядеть так:

[[7.0, 8.0, 6.55, 7.0000001, 10.12],[6.94, 9.0, 4.44444, 13.0, 9.0876]]

2) запишите имена моих столбцов в другой массив, arraycolnames. Результат должен выглядеть так: ['a','b','c','d','e']

3) записать имена моих индексов в другой массив, arrayindnames. Распечатав его, результат должен выглядеть так: ['k','p']

4) создайте мой фрейм данных, написав:

df = pd.Dataframe(array, columns=arraycolnames, index=arrayindnames)

5) округлите его, используя .round() метод. Добавляя decimals=2, я говорю, что хочу десятичные дроби до 2-го, но я могу написать любое необходимое количество десятичных знаков

df.round(decimals=2)

Мой окончательный результат, когда я печатаю df, будет:

      a      b      c      d       e
k   7.00   8.00   6.55   7.00  10.12
p   6.94   9.00   4.44  13.00   9.09
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...