49944


機械学習初心者の学生です。  
以下のコードを走らせたところ、TypeError: strptime() argument 1 must be str, not float
と表示されました。 strptimeのstrへの型変換が必要かと思いつつも、うまく修正ができません。

[code]

    import datetime
    
    pp = df["DATE"]
    tmp = []
    
    for i in range(len(pp)):
        #print(pp[i])
        d = datetime.datetime.strptime(pp[i], "%Y/%m/%d")
        tmp.append(d.weekday())
    
[/code]

ご教示頂けますと幸いです。どうぞよろしくお願いいたします。


CC BY-SA 4.0
2018-11-03T22:41:31.387
49941
2018-11-04T04:49:35.290
26303
question
python python3
Error:strptime() argument 1 must be str, not floatと表示される。


不具合は既に解決してそうなのですが、とりあえず

現在ループにより `datetime.strptime()` の処理を行っておりますが、pandasには
`pandas.to_datetime()`という非常に強力な 時系列データへの変換関数が用意されておりますので、こちらを使うことで

[code]

    df['DATE'] = pd.to_datetime(df['DATE'])
    
[/code]

と簡単に **DATE列**
を`文字列型`から`Datetime型`に変換することができます。（さすがにfloat型とstr型が混ざっていたら無理ですが・・）

<https://pandas.pydata.org/pandas-
docs/stable/generated/pandas.to_datetime.html>

また、 **DATE列** を`Datetime型`にすることにより `Series.dt()` という`Datetime型`のデータへの
**Accessor** が使用できますので、曜日の取得は

[code]

    df['DATE'].dt.weekday
    
[/code]

のように行うことができますので、合わせて覚えておくと良いかと思います。

<https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.dt.html>

* * *

ということで、以下は動作サンプルです

[code]

    import pandas as pd
    
    df = pd.DataFrame({'DATE': ['2018/4/1','2018/4/2','2018/4/3']})
    df['DATE'] = pd.to_datetime(df['DATE'])
    df['Month'] = df['DATE'].dt.month
    df['Day'] = df['DATE'].dt.day
    df['Weekday'] = df['DATE'].dt.weekday
    print(df)
    #        DATE  Month  Day  WeekDay
    #0 2018-04-01      4    1        6
    #1 2018-04-02      4    2        0
    #2 2018-04-03      4    3        1
    
[/code]


CC BY-SA 4.0
2018-11-04T04:49:35.290
49944
2018-11-04T04:49:35.290
24801
49941
answer