回答編集履歴

3

バグ修正

2021/02/15 09:55

投稿

ppaul
ppaul

スコア24666

test CHANGED
@@ -1,12 +1,10 @@
1
- 動かしてみたら、バグがありました。
2
-
3
- 修正中です
1
+ バグを修正しました
4
2
 
5
3
 
6
4
 
7
5
  行のすべてのデータが30未満であれば、nanを整数にして、-214783648になります。
8
6
 
9
- テストはしていませんが、だいたいこんな感じです。
7
+ ~~テストはしていませんが、だいたいこんな感じです。~~
10
8
 
11
9
 
12
10
 
@@ -36,21 +34,19 @@
36
34
 
37
35
  df = df[df>=30]
38
36
 
37
+ if df.shape[0] == 0:
38
+
39
+ df = pd.Series([0], name=target, dtype='int64')
40
+
39
41
  df = df.describe()['mean'].round(0)
40
-
41
- if df == np.nan:
42
-
43
- df == 0.0
44
42
 
45
43
  df = df.astype('int')
46
44
 
47
45
  print(target + '平均' + str(df))
48
46
 
49
- df_1 = pd.DataFrame([[int(df)]],columns=[target],index=[date])
47
+ df_1 = pd.DataFrame([[int(df)]],columns=[target])
50
48
 
51
49
  df_0 = pd.concat([df_0,df_1],axis=1)
52
-
53
- i += 1
54
50
 
55
51
  df_0.to_csv('出力するファイル.csv'.,encoding= 'shift-jis')
56
52
 
@@ -61,3 +57,101 @@
61
57
  i += 1は不要なので消してあります。
62
58
 
63
59
  ファイルの読み込みは一回で良いのでループの外に出しました。
60
+
61
+
62
+
63
+ 実行テストは以下です。
64
+
65
+ ```python
66
+
67
+ >>> import pandas as pd
68
+
69
+ >>> import io
70
+
71
+ >>>
72
+
73
+ >>> indata = '''列名1 列名2 列名3 列名4 列名5 列名6
74
+
75
+ ... 10 60 30 100 300 54
76
+
77
+ ... 20 70 20 200 40 50'''
78
+
79
+ >>>
80
+
81
+ >>> with io.StringIO(indata) as f:
82
+
83
+ ... df_all = pd.read_csv(f, sep=' +', engine='python')
84
+
85
+ ...
86
+
87
+ >>> print(df_all)
88
+
89
+ 列名1 列名2 列名3 列名4 列名5 列名6
90
+
91
+ 0 10 60 30 100 300 54
92
+
93
+ 1 20 70 20 200 40 50
94
+
95
+ >>>
96
+
97
+ >>> c_list = ['列名1','列名2','列名3','列名4','列名5','列名6']
98
+
99
+ >>> #df_all = pd.read_csv('入力するファイル.csv',encoding= 'shift-jis')
100
+
101
+ >>>
102
+
103
+ >>> df_0 = pd.DataFrame()
104
+
105
+ >>> for i in range(0,6):
106
+
107
+ ... target = c_list[i]
108
+
109
+ ... df = df_all[target].abs()
110
+
111
+ ... df = df.fillna(0)
112
+
113
+ ... df = df[df>=30]
114
+
115
+ ... if df.shape[0] == 0:
116
+
117
+ ... df = pd.Series([0], name=target, dtype='int64')
118
+
119
+ ... df = df.describe()['mean'].round(0)
120
+
121
+ ... df = df.astype('int')
122
+
123
+ ... print(target + '平均' + str(df))
124
+
125
+ ... df_1 = pd.DataFrame([[int(df)]],columns=[target])
126
+
127
+ ... df_0 = pd.concat([df_0,df_1],axis=1)
128
+
129
+ ...
130
+
131
+ 列名1平均0
132
+
133
+ 列名2平均65
134
+
135
+ 列名3平均30
136
+
137
+ 列名4平均150
138
+
139
+ 列名5平均170
140
+
141
+ 列名6平均52
142
+
143
+ >>> # i += 1
144
+
145
+ >>> #df_0.to_csv('出力するファイル.csv'.,encoding= 'shift-jis')
146
+
147
+ >>> print(df_0)
148
+
149
+ 列名1 列名2 列名3 列名4 列名5 列名6
150
+
151
+ 0 0 65 30 150 170 52
152
+
153
+ ```
154
+
155
+ c_list = ['列名1','列名2','列名3','列名4','列名5','列名6']
156
+
157
+ はdf_allのindexを使ったほうがいいですが、それはご自分でどうぞ。

2

バグ

2021/02/15 09:55

投稿

ppaul
ppaul

スコア24666

test CHANGED
@@ -1,3 +1,9 @@
1
+ 動かしてみたら、バグがありました。
2
+
3
+ 修正中です。
4
+
5
+
6
+
1
7
  行のすべてのデータが30未満であれば、nanを整数にして、-214783648になります。
2
8
 
3
9
  テストはしていませんが、だいたいこんな感じです。

1

Nanの修正

2021/02/15 09:41

投稿

ppaul
ppaul

スコア24666

test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  df = df.describe()['mean'].round(0)
34
34
 
35
- if df == np.Nan:
35
+ if df == np.nan:
36
36
 
37
37
  df == 0.0
38
38