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

質問編集履歴

1

実コードをコピーしました。

2018/01/11 03:16

投稿

jun.k
jun.k

スコア28

title CHANGED
File without changes
body CHANGED
@@ -1,19 +1,37 @@
1
1
  データフレームdfaの日付を表示する列Dateに対して、条件に合致する日があった場合は1とし、該当しなければ0とする新たな列sbを作りたいのですが、日付を認識しないのかすべて0になってしまいます。
2
2
 
3
- 作りたい列(sb)のイメージ
3
+ 加工前のデータ(下記コード2行目 dfa.head()の結果)
4
- |Date|--|sb|
4
+ Store Dept Date Weekly_Sales IsHoliday
5
- |:--|:--:|--:|
6
- |2010-02-05||0|
5
+ 0 1 1 2010-02-05 24924.50 False
7
- |2010-02-12||1|
6
+ 1 1 1 2010-02-12 46039.49 True
7
+ 2 1 1 2010-02-19 41595.55 False
8
+ 3 1 1 2010-02-26 19403.54 False
9
+ 4 1 1 2010-03-05 21827.90 False
8
10
 
9
11
  ○作ったコード
10
- s1=datetime.strptime('2010-2-12','%Y-%m-%d)
12
+ dfa=pd.read_csv('train.csv')
13
+ dfa.head()
11
- dfa['sb']=np.where(dfa['Date']=s1,1,0)
14
+ dfa['Date']=pd.to_datetime(dfa['Date'])
12
15
 
13
- ○結果
14
- |Date|--|sb|
15
- |:--|:--:|--:|
16
- |2010-02-05||0|
17
- |2010-02-12||0|
16
+ s1=datetime.strptime('2010-2-12','%Y-%m-%d')
17
+ s2=datetime.strptime('2011-2-11','%Y-%m-%d')
18
+ s3=datetime.strptime('2012-2-10','%Y-%m-%d')
19
+ s1=datetime.strptime('2010-2-12','%Y-%m-%d')
18
20
 
21
+ dfa['SuperBowl']=np.where(dfa['Date']==s1,1,0)
22
+ dfa['SuperBowl']=np.where(dfa['Date']==s2,1,0)
23
+ dfa['SuperBowl']=np.where(dfa['Date']==s3,1,0)
24
+
25
+ dfa.head()
26
+
27
+ ○上記コード実行後
28
+
29
+ Store Dept Date Weekly_Sales IsHoliday SuperBowl
30
+ 0 1 1 2010-02-05 24924.50   False      0
31
+ 1 1 1 2010-02-12 46039.49   True      0
32
+ 2 1 1 2010-02-19 41595.55   False       0
33
+ 3 1 1 2010-02-26 19403.54   False       0
34
+ 4 1 1 2010-03-05 21827.90   False       0
35
+
36
+
19
37
  どのようにすれば日付を条件文で認識してくれるのでしょうか