简体   繁体   中英

Add values in a dataframe row based on a specific condition

I have a dataframe with columns. The first is filled with timestamps. I want to create a new column and add 0 or 1 based on the hour value of each timestamp. For example, if %H >= "03" -> 1 else 0.

The df looks like that:

2018-08-29T00:03:09      12    0                 
2018-08-23T00:08:10      2     0 

And I wanted to change values in the 3rd column with "1s" as described. Thank you all in advance for the effort!

lets say you have a dataframe like following,

import pandas as pd
from datetime import datetime

d={'time':['2018-08-29T00:03:09', '2018-08-29T12:03:09', '2018-08-31T10:05:09'],
    'serial':[1,2,3]}
data=pd.DataFrame(data=d)

data
           time             serial
0   2018-08-29T00:03:09       1
1   2018-08-29T12:03:09       2
2   2018-08-31T10:05:09       3

define a function based on which the new column values would be obtained.

def func(t):
  if datetime.strptime(t, '%Y-%m-%dT%H:%M:%S').hour >= 3:
    return 1
  else: 
    return 0

Now insert a new column apply the function to get the values,

data.insert(2, 'new_column', data['time'].apply(lambda x: func(x)).tolist())

This is the updated dataframe

data

            time              serial    new_column
0   2018-08-29T00:03:09          1          0
1   2018-08-29T12:03:09          2          1
2   2018-08-31T10:05:09          3          1

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM