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

回答編集履歴

3

f

2019/08/26 10:14

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -19,6 +19,7 @@
19
19
 
20
20
 
21
21
  ```python
22
+ import numpy as np
22
23
  import pandas as pd
23
24
 
24
25
  df = pd.DataFrame(

2

x

2019/08/26 10:14

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  この行の場合
17
17
  1. 9月 - 3ヶ月 = 6月 を計算する。
18
- 2. ID が同じで6月の行の売上を抽出する。抽出した結果が空の場合、そのようなデータはないということなので、np.nan を返す。
18
+ 2. ID1で6月の行の売上を抽出する。抽出した結果が空の場合、そのようなデータはないということなので、np.nan を返す。
19
19
 
20
20
 
21
21
  ```python
@@ -47,10 +47,10 @@
47
47
  # nヶ月前を表す文字列を作成する。(例: 9月だったら6月)
48
48
  n_month_ago = str(int(month[:-1]) - i) + "月"
49
49
 
50
- # 「ID が同じ」かつ「月が n_month_ago」と一致する行を取得する。
50
+ # 「ID が同じ」かつ「月が n_month_ago」と一致する行の列「売上」の値を取得する。
51
51
  sale_n_month_ago = df.loc[(df["ID"] == id_) & (df["月"] == n_month_ago), "売上"]
52
52
 
53
- # もしそのようなが存在しない場合は sale_n_month_ago は空なので、NaN とする。
53
+ # もしそのようなが存在しない場合は sale_n_month_ago は空なので、NaN とする。
54
54
  # 存在する場合はスカラーにする。
55
55
  sale_n_month_ago = np.nan if sale_n_month_ago.empty else sale_n_month_ago.values[0]
56
56
 

1

d

2019/08/26 10:09

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -57,22 +57,10 @@
57
57
  return sale_n_month_ago
58
58
 
59
59
 
60
- # datetime64 型に変換する。
61
- dt = pd.to_datetime(df["月"], format="%m月")
62
-
63
60
  for i in range(1, 4):
64
61
  df[f"{i}ヶ月前売り上げ"] = df.apply(get_n_month_ago, axis=1, args=(i,))
65
62
 
66
- print(df)
67
- # 月 ID 売上 地域 1ヶ月前売り上げ 2ヶ月前売り上げ 3ヶ月前売り上げ
68
- # 0 9月 1 100 東京 110.0 120.0 130.0
63
+ df.to_csv("test2.csv", index=False)
69
- # 1 8月 1 110 東京 120.0 130.0 NaN
70
- # 2 7月 1 120 東京 130.0 NaN NaN
71
- # 3 6月 1 130 東京 NaN NaN NaN
72
- # 4 9月 2 90 千葉 80.0 70.0 60.0
73
- # 5 8月 2 80 千葉 70.0 60.0 NaN
74
- # 6 7月 2 70 千葉 60.0 NaN NaN
75
- # 7 6月 2 60 千葉 NaN NaN NaN
76
64
  ```
77
65
 
78
66
  作成された CSV