使用不同长度的给定列表生成具有不同列长度的数据帧

2024-10-01 05:00:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个不同长度的列表,我想形成一个数据帧,将这些列表作为数据帧的列。 假设我的名单是 L1 =["a","b"]L2 = ["g","h","o","y"]L3 = ["k","u","e"]

我想要一个数据帧

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

这个问题不仅仅限于三个人列。它在几百个范围内


Tags: 数据l1列表l3名单l2人列
2条回答

下面的结果,它可能正在寻找,其思想是将列表转换为数据帧,您还可以创建一个函数,将列表参数作为输入,而不是手动将每个列表键入数据帧。你知道吗

例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))

您可以使用来自itertools^{}迭代器。它将用fillvalue填充较短的序列,默认情况下None。您可以在下面的示例中指定其他内容,如空字符串。你知道吗

from itertools import zip_longest
df = pd.DataFrame(zip_longest(L1,L2,L3, fillvalue=''), 
                  columns=['L1','L2','L3'])

相关问题 更多 >