Создание DataFrame с двойным циклом - PullRequest
0 голосов
/ 23 сентября 2018

Я получил это:

columns = ['a','b','c']
data = [1,2,3],[3,4],[4,5,5]
df = pandas.DataFrame({i:pandas.Series(j) for i in columns for j in data})
print(df)

Вывод:

   a  b  c
0  4  4  4
1  5  5  5
2  5  5  5

Мне нужно:

   a  b  c
0  1  3  4
1  2  4  5
2  3     5

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

Любые советы?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Вы перезаписываете значения, когда входите во второй цикл.То, что вы делаете:

import pandas


columns = ['a','b','c']
data = [1,2,3],[3,4],[4,5,5]

myDict = {}
for i in columns:
    for j in data:
        myDict[i]=j
print(pandas.DataFrame(myDict))

Вот почему ваши данные перезаписываются.Ясно, что вы хотите сделать:

myDict = {}
for i,key in enumerate(columns):
    myDict[key] = data[i]

Однако это приведет к:

raise ValueError('arrays must all be same length')
ValueError: arrays must all be same length

Которое имеет хорошо описанное решение здесь

0 голосов
/ 23 сентября 2018

Это должно сделать это:

import pandas as pd

data = [[1, 2, 3], [3, 4], [4, 5, 5]]
df = pd.DataFrame(data).transpose()
df.columns = columns

Вывод:

    a    b    c
0  1.0  3.0  4.0
1  2.0  4.0  5.0
2  3.0  NaN  5.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...