2017-02-19 5 views
0

Вот пример моего dataframe:dropna() для нескольких столбцов

benzene toluene styrene xylenes + ethylbenzene 1,3,5-trimethylbenzene propylbenzene chlorobenzene 4-ethyltoluene isopropyl benzene 1,3-butadiene 
0 1.1040 NaN NaN NaN NaN NaN NaN NaN NaN 0.1914 
1 1.1312 NaN NaN NaN NaN NaN NaN NaN NaN 0.2353 
2 1.6092 NaN NaN NaN NaN NaN NaN NaN NaN 0.7289 
3 1.2578 NaN NaN NaN NaN NaN NaN NaN NaN 0.3269 
4 1.8245 NaN NaN NaN NaN NaN NaN NaN NaN 0.2859 
5 1.1438 NaN NaN NaN NaN NaN NaN NaN NaN 0.1229 
6 1.1492 NaN NaN NaN NaN NaN NaN NaN NaN 0.4135 
7 0.8638 NaN NaN NaN NaN NaN NaN NaN NaN 0.6211 
8 1.3209 NaN NaN NaN NaN NaN NaN NaN NaN 0.6243 
9 1.8316 NaN NaN NaN NaN NaN NaN NaN NaN 0.6711 
10 1.0491 NaN NaN NaN NaN NaN NaN NaN NaN 0.3379 
11 1.5014 NaN NaN NaN NaN NaN NaN NaN NaN 0.7981 
12 0.8355 NaN NaN NaN NaN NaN NaN NaN NaN 0.2950 
13 1.5157 NaN NaN NaN NaN NaN NaN NaN NaN 0.7630 
14 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
15 0.3561 NaN NaN NaN NaN NaN NaN NaN NaN 0.1983 
16 16.9953 NaN NaN NaN NaN NaN NaN NaN NaN 11.6154 
17 NaN 2.5533 1.7676 4.8479 2.1782 2.0693 NaN NaN NaN NaN 
18 NaN 4.8740 4.5862 5.6155 5.3850 5.1158 NaN NaN NaN NaN 
19 NaN 5.5761 7.1540 5.2305 7.0061 6.6558 NaN NaN NaN NaN 
20 NaN 5.6369 8.0997 5.0377 7.4323 7.0607 NaN NaN NaN NaN 
21 NaN 5.6762 8.5204 5.0503 7.9827 7.5835 NaN NaN NaN NaN 
22 NaN 5.7317 8.9214 4.7230 8.4647 8.0415 NaN NaN NaN NaN 
23 NaN 5.6349 8.3186 4.2832 8.4023 7.9822 NaN NaN NaN NaN 
24 NaN 5.5504 9.1297 4.2451 8.2951 7.8803 NaN NaN NaN NaN 
25 NaN 5.9629 9.0821 4.3384 9.0512 8.5986 NaN NaN NaN NaN 
26 NaN 5.7665 10.1691 4.2266 8.9481 8.5007 NaN NaN NaN NaN 
27 NaN 5.6709 9.1637 4.0334 9.0945 8.6397 NaN NaN NaN NaN 
28 NaN 5.8178 8.8859 4.0104 9.0523 8.5997 NaN NaN NaN NaN 
29 NaN 5.5470 9.0448 3.9718 8.8667 8.4233 NaN NaN NaN NaN 
[...] 

Фактический размер 66x10

У меня последовательность около 17 не NAN значения для каждого столбца. Я бы хотел сбросить клетки Нан, чтобы иметь полную таблицу 17x10.

Я использовал pd.DataFrame.dropna, но не удаляет исправления ячейки. Есть ли способ сделать это, не перебирая столбцы?

ответ

1

Я думаю, что вы можете использовать apply с dropna:

df = df.apply(lambda x: pd.Series(x.dropna().values)) 
print (df) 

Другой numpy solution с сортировкой numpy array созданный values, а затем удалить строки со всеми NaN по dropna:

df = pd.DataFrame(np.sort(df.values, axis=0), index=df.index, columns=df.columns) 
     .dropna(how='all') 
print (df) 
Смежные вопросы