Создайте фрейм данных с разной длиной столбца с заданными списками разной длины - PullRequest
1 голос
/ 22 сентября 2019

У меня есть два списка разной длины, и я хочу сформировать DataFrame с этими списками в виде столбцов DataFrame.Допустим, мои списки L1 =["a","b"] L2 = ["g","h","o","y"] L3 = ["k","u","e"]

Мне нужен фрейм данных, в котором выглядит как

 L1 L2 L3
 a  g  k
 b  h  u
    o  e
    y   

Вопрос не ограничен только для трех столбцов.в диапазоне сотен

Ответы [ 2 ]

1 голос
/ 22 сентября 2019

Вы можете использовать zip_longest итератор от itertools.Для более коротких последовательностей будет добавлено fillvalue, что по умолчанию равно None.В приведенном ниже примере вы можете указать что-то еще, например пустую строку.

from itertools import zip_longest
df = pd.DataFrame(zip_longest(L1,L2,L3, fillvalue=''), 
                  columns=['L1','L2','L3'])
1 голос
/ 22 сентября 2019

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

Пример 1:

import pandas as pd 
import numpy as np

## your list
L1 =["a","b"] 
L2 = ["g","h","o","y"] 
L3 = ["k","u","e"]

## Convert List into DataFrame 
L1 = pd.DataFrame(L1)
L2 = pd.DataFrame(L2)
L3 = pd.DataFrame(L3)

## Concanate the created DataFrames and Fill 'NaN' with or empty spaces 
db =pd.concat([L1,L2,L3], ignore_index=True, axis=1).replace(np.nan, '')

## Results
print(db)

Пример 2 (Передача аргументов списка функций):

import pandas as pd 
import numpy as np

## your list
L1 =["a","b"] 
L2 = ["g","h","o","y"] 
L3 = ["k","u","e"]

## function passing arguments
def wrapper(*args):
    return pd.concat([pd.DataFrame(i) for i in args], ignore_index=True, axis=1).replace(np.nan, '')


## Results
print(wrapper(L1,L2,L3))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...