Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从pandas.tolist()中删除最右边的None?_Python_Pandas_List_Numpy - Fatal编程技术网

Python 如何从pandas.tolist()中删除最右边的None?

Python 如何从pandas.tolist()中删除最右边的None?,python,pandas,list,numpy,Python,Pandas,List,Numpy,假设我导入xlsx文件以列出: 是否可以删除最右边的None,而不通过行循环?预期结果: [[nan, 1.0, 2.0], [nan, 3.0], [nan, 4.0, 5.0, 6.0], [nan, 7.0]] 基于NumPy的解决方案 要获取嵌套列表,请执行以下操作: list(map(list, res)) [[nan, 1.0, 2.0], [nan, 3.0], [nan, 4.0, 5.0, 6.0], [nan, 7.0]] 设置: import numpy as

假设我导入
xlsx
文件以列出:

是否可以删除最右边的
None
,而不通过行循环?预期结果:

[[nan, 1.0, 2.0],
 [nan, 3.0],
 [nan, 4.0, 5.0, 6.0],
 [nan, 7.0]]
基于NumPy的解决方案 要获取嵌套列表,请执行以下操作:

list(map(list, res))
[[nan, 1.0, 2.0], [nan, 3.0], [nan, 4.0, 5.0, 6.0], [nan, 7.0]]

设置:

import numpy as np

nan = np.nan
a = np.array([[nan,  1.,  2., nan],
              [nan,  3., nan, nan],
              [nan,  4.,  5.,  6.],
              [nan,  7., nan, nan]])

使用列表
没有任何明显或干净的东西。由于输出的行长度不均匀,只需迭代和截断即可。谢谢。我认为有一个
read\u excel
选项可以这样做。我得到一个错误,输入类型不支持ufunc'isnan…行
m=np.cumsum(~np.isnan(a_rev),1)>=1
尝试使用
pd.read\u excel(open('1.xlsx','rb'),index\u col=None,header=None,dtype=float)。value.tolist()
@F.Vosnim`第二次进近的计时速度似乎快了4倍@F.Vosnim,因此我建议在这里使用列表
list(map(list, res))
[[nan, 1.0, 2.0], [nan, 3.0], [nan, 4.0, 5.0, 6.0], [nan, 7.0]]
import numpy as np

nan = np.nan
a = np.array([[nan,  1.,  2., nan],
              [nan,  3., nan, nan],
              [nan,  4.,  5.,  6.],
              [nan,  7., nan, nan]])
l = [[nan,  1.,  2., nan], [nan,  3., nan, nan], 
     [nan,  4.,  5.,  6.],  [nan,  7., nan, nan]]

out = []
for i in l:
    i_rev = i[::-1]
    for ix, j in enumerate(i_rev):
        if j == j:
            out.append(i[:len(i)-ix])
            break

out
# [[nan, 1.0, 2.0], [nan, 3.0], [nan, 4.0, 5.0, 6.0], [nan, 7.0]]