如何使用numpy将nan添加到数组的末尾

时间:2019-11-20 13:31:29

标签: python pandas numpy

我有一个包含多个数组的列表,我希望它们具有相同的大小,用nan填充较少的元素。我有一些具有整数的数组,而另一些具有字符串的数组。

例如:

a = ['Nike']
b = [1,5,10,15,20]
c = ['Adidas']
d = [150, 2]

我尝试过

max_len = max(len(a),len(b),len(c),len(d))

empty = np.empty(max_len - len(a))
a = np.asarray(a) + empty

empty = np.empty(max_len - len(b))
b = np.asarray(b) + empty

我对所有数组都做同样的事情,但是会发生错误(TypeError:只能将整数标量数组转换为标量索引)

之所以这样做,是因为我想创建一个DataFrame并将所有数组作为不同的列。

谢谢您

4 个答案:

答案 0 :(得分:3)

我建议您使用lists,因为您也有strings。这是使用zip_longest的一种方法:

from itertools import zip_longest

a, b, c, d = map(list,(zip(*zip_longest(a,b,c,d, fillvalue=float('nan')))))

print(a)
# ['Nike', nan, nan, nan, nan]

print(b)
# [1, 5, 10, 15, 20]

print(c)
# ['Adidas', nan, nan, nan, nan]

print(d)
# [150, 2, nan, nan, nan]

另一种方法可能是:

max_len = len(max([a,b,c,d], key=len))
a, b, c, d = [l+[float('nan')]*(max_len-len(l)) for l in [a,b,c,d]]

答案 1 :(得分:2)

怎么样?

<iothubname>/<deviceid>/api-version=2016-11-14

答案 2 :(得分:0)

您应该使用numpy.append(array, value, axis)附加到数组。在您的示例中为ans = np.append(a,empty)

答案 3 :(得分:0)

您可以像这样直接进行操作:

MaterialPageRoute