質問するログイン新規登録

回答編集履歴

1

問題が変わったので変更

2021/04/07 09:18

投稿

ppaul
ppaul

スコア24672

answer CHANGED
@@ -1,3 +1,60 @@
1
+ ###### 実現したいことは、nanがランダムに含まれるデータフレームの数値を上から詰めていき、最後に、すべての列がnanとなっている行を削除したいです。
2
+
3
+ そういうのを最初に書いてくれればとても簡単です。
4
+
5
+ ```python
6
+ >>> print(count_res)
7
+ a1 b1 c1 d1
8
+ 0 5.384058 0.026853 0.076923 2.716981
9
+ 1 1.507645 NaN 1.945513 3.923077
10
+ 2 0.177189 0.435654 2.516245 0.294964
11
+ 3 47.000000 1.015123 0.104000 0.018237
12
+ 4 NaN NaN 1.258297 0.932941
13
+ 5 0.081967 NaN 0.045249 0.501319
14
+ 6 0.805804 5.803681 0.083333 0.443567
15
+ 7 1.565878 NaN 0.610422 NaN
16
+ 8 NaN 2.991228 NaN NaN
17
+ 9 NaN 0.465946 0.457447 0.632156
18
+ 10 2.848485 2.640625 0.626437 0.607256
19
+ 11 NaN 0.626437 NaN 1.708333
20
+ 12 0.662539 0.076923 1.446903 2.848485
21
+ 13 1.760814 0.457447 1.824497 0.960552
22
+ 14 3.505682 0.276029 0.717063 0.753906
23
+ 15 0.646630 0.304942 NaN 4.103226
24
+ 16 1.762832 1.921788 1.762832 NaN
25
+ 17 0.741304 2.336323 0.465946 0.617564
26
+ 18 4.420000 0.255647 0.443567 1.582996
27
+ 19 0.071301 NaN 0.805804 2.336323
28
+ >>> temp = count_res.copy()
29
+ >>> temp[temp.columns] =float("NaN")
30
+ >>> for column in count_res.columns:
31
+ ... temp[column] = count_res[column].dropna().reset_index(drop=True)
32
+ ...
33
+ >>> result = temp.dropna(how='all')
34
+ >>> print(result)
35
+ a1 b1 c1 d1
36
+ 0 5.384058 0.026853 0.076923 2.716981
37
+ 1 1.507645 0.435654 1.945513 3.923077
38
+ 2 0.177189 1.015123 2.516245 0.294964
39
+ 3 47.000000 5.803681 0.104000 0.018237
40
+ 4 0.081967 2.991228 1.258297 0.932941
41
+ 5 0.805804 0.465946 0.045249 0.501319
42
+ 6 1.565878 2.640625 0.083333 0.443567
43
+ 7 2.848485 0.626437 0.610422 0.632156
44
+ 8 0.662539 0.076923 0.457447 0.607256
45
+ 9 1.760814 0.457447 0.626437 1.708333
46
+ 10 3.505682 0.276029 1.446903 2.848485
47
+ 11 0.646630 0.304942 1.824497 0.960552
48
+ 12 1.762832 1.921788 0.717063 0.753906
49
+ 13 0.741304 2.336323 1.762832 4.103226
50
+ 14 4.420000 0.255647 0.465946 0.617564
51
+ 15 0.071301 NaN 0.443567 1.582996
52
+ 16 NaN NaN 0.805804 2.336323
53
+ ```
54
+ でいいですか。
55
+
56
+ ###### 問題が変わってしまったので、以下は無視してください。
57
+
1
58
  TheBullchannelさんがやりたいこととpandasのソートに仕様が違っています。
2
59
 
3
60
  やりたいことは、以下のコードでできるでしょう。