Сжатые столбцы в Pandas DataFrame - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть два списка, я хочу создать pandas Dataframe с 3 столбцами, где один из столбцов содержит столбец, сгенерированный путем сжатия двух из списка. Я попробовал следующее

import pandas as pd
import numpy as np

S_x = [80, 90, 100, 200, 300, 600, 800, 900, 1000, 1200]
S_y = [800, 1000, 1200, 450, 80, 100, 60, 300, 700, 900]
S_z=list(zip(S_x,S_y))

frame4 = pd.DataFrame(np.column_stack([S_x, S_y,S_z]), columns=["Recovered Data", "Percentage Error","Zipped"])

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

ValueError: Shape of passed values is (4, 10), indices imply (3, 10)

Я не знаю, что я делаю неправильно. Использую Python 3.x

Ответы [ 2 ]

2 голосов
/ 01 апреля 2020

Когда вы используете np.column_stack, он автоматически распаковывает ваш S_z и, таким образом, np.column_stack([S_x, S_y,S_z]) приобретает форму (10, 4). Делай так:

frame4 = pd.DataFrame({"Recovered Data": S_x, "Percentage Error": S_y,"Zipped": S_z})
0 голосов
/ 01 апреля 2020

IIU C

frame=pd.DataFrame(zip(S_x, S_y, S_z), columns=["Recovered Data", "Percentage Error","Zipped"])
   Recovered Data  Percentage Error       Zipped
0              80               800    (80, 800)
1              90              1000   (90, 1000)
2             100              1200  (100, 1200)
3             200               450   (200, 450)
4             300                80    (300, 80)
5             600               100   (600, 100)
6             800                60    (800, 60)
7             900               300   (900, 300)
8            1000               700  (1000, 700)
9            1200               900  (1200, 900)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...