我有两个长度不同的列表,我想形成一个具有这些列表作为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
这个问题不仅限于三列,它在数百个范围内
答案 0 :(得分: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)
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))
答案 1 :(得分:1)
您可以使用itertools
中的zip_longest
迭代器。它将用fillvalue
填充较短的序列,默认情况下为None
。您可以在下面的示例中指定其他内容,例如空字符串。
from itertools import zip_longest
df = pd.DataFrame(zip_longest(L1,L2,L3, fillvalue=''),
columns=['L1','L2','L3'])