用不同长度的Python填充数组

时间:2018-01-30 15:39:18

标签: python arrays pandas numpy

所以我发现了这个: Numpy: Fix array with rows of different lengths by filling the empty elements with zeros

但我真正想要的是:

mylist = [[1],[1,2],[1,2,3]]

mylist.fill()
>>> [[0,0,1], [0,1,2], [1,2,3]]

我知道大熊猫' fillna填充,但0在我的矩阵的右边部分,我需要它们在左边部分。有线索吗?

3 个答案:

答案 0 :(得分:3)

我认为应该这样做:

def fill(a):
    length = max([len(i) for i in a])
    return [[0]*(length-len(i)) + i for i in a]

fill(mylist)
#[[0,0,1], [0,1,2], [1,2,3]]

答案 1 :(得分:2)

因为您标记了pandas

pd.DataFrame(mylist).\
  apply(lambda x: sorted(x, key=pd.notnull), 1).\
    fillna(0).astype(int).values.tolist()
Out[89]: [[0, 0, 1], [0, 1, 2], [1, 2, 3]]

答案 2 :(得分:1)

带有0和排序值的Fillna检查它们是否不是0,即

df = pd.DataFrame(mylist)
df.fillna(0).apply(lambda x : sorted(x,key=lambda x : x!=0),1).values.astype(int).tolist()

[[0, 0, 1], [0, 1, 2], [1, 2, 3]]