Add Multiple Columns to Pandas Dataframe from Function

后端 未结 4 1088
执笔经年
执笔经年 2021-01-30 10:41

I have a pandas data frame mydf that has two columns,and both columns are datetime datatypes: mydate and mytime. I want to add three more

4条回答
  •  滥情空心
    2021-01-30 11:19

    Here's on approach to do it using one apply

    Say, df is like

    In [64]: df
    Out[64]:
           mydate     mytime
    0  2011-01-01 2011-11-14
    1  2011-01-02 2011-11-15
    2  2011-01-03 2011-11-16
    3  2011-01-04 2011-11-17
    4  2011-01-05 2011-11-18
    5  2011-01-06 2011-11-19
    6  2011-01-07 2011-11-20
    7  2011-01-08 2011-11-21
    8  2011-01-09 2011-11-22
    9  2011-01-10 2011-11-23
    10 2011-01-11 2011-11-24
    11 2011-01-12 2011-11-25
    

    We'll take the lambda function out to separate line for readability and define it like

    In [65]: lambdafunc = lambda x: pd.Series([x['mytime'].hour,
                                               x['mydate'].isocalendar()[1],
                                               x['mydate'].weekday()])
    

    And, apply and store the result to df[['hour', 'weekday', 'weeknum']]

    In [66]: df[['hour', 'weekday', 'weeknum']] = df.apply(lambdafunc, axis=1)
    

    And, the output is like

    In [67]: df
    Out[67]:
           mydate     mytime  hour  weekday  weeknum
    0  2011-01-01 2011-11-14     0       52        5
    1  2011-01-02 2011-11-15     0       52        6
    2  2011-01-03 2011-11-16     0        1        0
    3  2011-01-04 2011-11-17     0        1        1
    4  2011-01-05 2011-11-18     0        1        2
    5  2011-01-06 2011-11-19     0        1        3
    6  2011-01-07 2011-11-20     0        1        4
    7  2011-01-08 2011-11-21     0        1        5
    8  2011-01-09 2011-11-22     0        1        6
    9  2011-01-10 2011-11-23     0        2        0
    10 2011-01-11 2011-11-24     0        2        1
    11 2011-01-12 2011-11-25     0        2        2
    

提交回复
热议问题