質問編集履歴

1

コードをすべて書きました。逆にわかりづらくなっていたら申し訳ないです。「#期間を出す」の部分の処理で警告が出ている状況です。

2020/05/05 12:59

投稿

mm_mountain
mm_mountain

スコア2

test CHANGED
File without changes
test CHANGED
@@ -48,6 +48,50 @@
48
48
 
49
49
  ```Python3
50
50
 
51
+ import numpy as np
52
+
53
+ import pandas as pd
54
+
55
+ import matplotlib.pyplot as plt
56
+
57
+ %matplotlib inline
58
+
59
+
60
+
61
+ cs_master = pd.read_csv("customer_master.csv")
62
+
63
+ class_master = pd.read_csv("class_master.csv")
64
+
65
+
66
+
67
+ cs_master.head()
68
+
69
+ class_master.head()
70
+
71
+
72
+
73
+ #文字列から日付へ変換
74
+
75
+ cs_master["start_date"] = pd.to_datetime(cs_master["start_date"])
76
+
77
+ cs_master["end_date"] = pd.to_datetime(cs_master["end_date"])
78
+
79
+ cs_master["start_ym"] = cs_master["start_date"].dt.strftime("%Y%m")
80
+
81
+ cs_master["end_ym"] = cs_master["end_date"].dt.strftime("%Y%m")
82
+
83
+
84
+
85
+ #結合
86
+
87
+ cs_join = pd.merge(cs_master, class_master, on="class", how="left")
88
+
89
+ cs_join.head()
90
+
91
+
92
+
93
+ #期間を出す
94
+
51
95
  from dateutil.relativedelta import relativedelta
52
96
 
53
97
  cs_join["calc_date"] = cs_join["end_date"]
@@ -68,7 +112,23 @@
68
112
 
69
113
  ```
70
114
 
115
+ ```cs_join.head()
116
+
117
+ customer_id name class gender start_date end_date campaign_id is_deleted start_ym end_ym class_name price
118
+
119
+ 0 OA832399 XXXX C01 F 2015-05-01 NaT CA1 0 201505 NaN オールタイム 10500
120
+
121
+ 1 PL270116 XXXXX C01 M 2015-05-01 NaT CA1 0 201505 NaN オールタイム 10500
122
+
123
+ 2 OA974876 XXXXX C01 M 2015-05-01 NaT CA1 0 201505 NaN オールタイム 10500
124
+
125
+ 3 HD024127 XXXXX C01 F 2015-05-01 NaT CA1 0 201505 NaN オールタイム 10500
126
+
127
+ 4 HD661448 XXXXX C03 F 2015-05-01 NaT CA1 0 201505 NaN ナイト 6000
128
+
71
- ```Out
129
+ ```
130
+
131
+ ```cs_join[["start_date", "end_date", "calc_date", "member_period"]].head()
72
132
 
73
133
  start_date end_date calc_date member_period
74
134