簡體   English   中英

使用不同長度的給定列表使 dataframe 具有不同的列長度

[英]Make dataframe having different column length with the given lists of different length

我有兩個不同長度的列表,我想形成一個 DataFrame,將這些列表作為 DataFrame 的列。 假設我的列表是L1 =["a","b"] L2 = ["g","h","o","y"] L3 = ["k","u","e"]

我想要一個 dataframe 看起來像

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

這個問題不僅限於三列。它在數百個范圍內

根據結果,它可能正在尋找,想法是將列表轉換為數據幀,您還可以創建一個 function 作為輸入,列出 arguments 而不是手動將每個列表輸入數據幀。

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

您可以使用來自itertoolszip_longest迭代器。 它將使用默認為Nonefillvalue填充較短的序列。 您可以在下面的示例中指定其他內容,例如空字符串。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM