所以我发现了这个: 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在我的矩阵的右边部分,我需要它们在左边部分。有线索吗?
答案 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]]