回答編集履歴
3
f
test
CHANGED
@@ -39,6 +39,8 @@
|
|
39
39
|
|
40
40
|
|
41
41
|
```python
|
42
|
+
|
43
|
+
import numpy as np
|
42
44
|
|
43
45
|
import pandas as pd
|
44
46
|
|
2
x
test
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
1. 9月 - 3ヶ月 = 6月 を計算する。
|
34
34
|
|
35
|
-
2. ID
|
35
|
+
2. ID1で6月の行の売上を抽出する。抽出した結果が空の場合、そのようなデータはないということなので、np.nan を返す。
|
36
36
|
|
37
37
|
|
38
38
|
|
@@ -96,13 +96,13 @@
|
|
96
96
|
|
97
97
|
|
98
98
|
|
99
|
-
# 「ID が同じ」かつ「月が n_month_ago」と一致する行を取得する。
|
99
|
+
# 「ID が同じ」かつ「月が n_month_ago」と一致する行の列「売上」の値を取得する。
|
100
100
|
|
101
101
|
sale_n_month_ago = df.loc[(df["ID"] == id_) & (df["月"] == n_month_ago), "売上"]
|
102
102
|
|
103
103
|
|
104
104
|
|
105
|
-
# もしそのような
|
105
|
+
# もしそのような値が存在しない場合は sale_n_month_ago は空なので、NaN とする。
|
106
106
|
|
107
107
|
# 存在する場合はスカラーにする。
|
108
108
|
|
1
d
test
CHANGED
@@ -116,37 +116,13 @@
|
|
116
116
|
|
117
117
|
|
118
118
|
|
119
|
-
# datetime64 型に変換する。
|
120
|
-
|
121
|
-
dt = pd.to_datetime(df["月"], format="%m月")
|
122
|
-
|
123
|
-
|
124
|
-
|
125
119
|
for i in range(1, 4):
|
126
120
|
|
127
121
|
df[f"{i}ヶ月前売り上げ"] = df.apply(get_n_month_ago, axis=1, args=(i,))
|
128
122
|
|
129
123
|
|
130
124
|
|
131
|
-
print(df)
|
132
|
-
|
133
|
-
# 月 ID 売上 地域 1ヶ月前売り上げ 2ヶ月前売り上げ 3ヶ月前売り上げ
|
134
|
-
|
135
|
-
|
125
|
+
df.to_csv("test2.csv", index=False)
|
136
|
-
|
137
|
-
# 1 8月 1 110 東京 120.0 130.0 NaN
|
138
|
-
|
139
|
-
# 2 7月 1 120 東京 130.0 NaN NaN
|
140
|
-
|
141
|
-
# 3 6月 1 130 東京 NaN NaN NaN
|
142
|
-
|
143
|
-
# 4 9月 2 90 千葉 80.0 70.0 60.0
|
144
|
-
|
145
|
-
# 5 8月 2 80 千葉 70.0 60.0 NaN
|
146
|
-
|
147
|
-
# 6 7月 2 70 千葉 60.0 NaN NaN
|
148
|
-
|
149
|
-
# 7 6月 2 60 千葉 NaN NaN NaN
|
150
126
|
|
151
127
|
```
|
152
128
|
|