Если вы используете numpy, вы можете использовать логический оператор not и np.isnan () .
Вот краткий пример:
>>> x = np.array([[1,2,3,4,5],[1,2,3,np.nan,np.nan]])
>>> for a in x:
... r = a[~np.isnan(a)]
... print(r[:2],r[-2:])
...
[1. 2.] [4. 5.]
[1. 2.] [2. 3.]
Используя ваши данные:
>>> x
array([[45., 7., 43., 6., nan, nan],
[44., 6., 42., 5., nan, nan],
[nan, nan, nan, nan, nan, nan],
[41., 5., 48., 23., 21., 34.],
[46., 4., 47., 22., nan, nan],
[nan, nan, nan, nan, nan, nan]])
Тогда
final_data = []
for a in x:
r = a[~np.isnan(a)]
if len(r): #skip empty arrays
res = (r[:2],r[-2:])
final_data.append(res)
pd.DataFrame(final_data)
[45. 7.] [43. 6.]
[44. 6.] [42. 5.]
[41. 5.] [21. 34.]
[46. 4.] [47. 22.]