Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

insert row with datetime index to dataframe

I have a dataframe with datetime index:

time                count  day hour  minute  label
2018-06-07 00:25:00 207    7.0 0.0   25.0    177.0
2018-06-07 00:55:00 187    7.0 0.0   55.0    150.0
2018-06-07 01:25:00 194    7.0 1.0   25.0    165.0
2018-06-07 01:55:00 176    7.0 1.0   55.0    175.0
2018-06-07 02:25:00 195    7.0 2.0   25.0    172.0
-> add new datetime record record here 

and I'm trying to add some new records but I get:

[DatetimeIndex(['2018-06-07 01:55:00'], dtype='datetime64[ns]', name='time', freq=None)] not an index
# this happen even if row exists or not

I just want to add a 30 minutes interval record, my code is something like

last_date = recent_posts.iloc[[-1]].index
last_date = last_date + timedelta(minutes=30)

recent_posts.iloc[[last_date]] = # bla #bla

# What I may be doing wrong?
like image 749
Freddy Avatar asked Jun 13 '18 15:06

Freddy


1 Answers

The correct way to insert a new record would be:

df.append(pd.DataFrame(index=[last_date]))

Example:

print(df)

Output:

                   count    day hour    minute  label
time                    
2018-06-07 00:25:00 207 7.0 0.0 25.0    177.0
2018-06-07 00:55:00 187 7.0 0.0 55.0    150.0

To add an element, use .append():

df.append(pd.DataFrame(index=[last_date]))

Output:

                     count  day  hour  label  minute
2018-06-07 00:25:00  207.0  7.0   0.0  177.0    25.0
2018-06-07 00:55:00  187.0  7.0   0.0  150.0    55.0
2018-06-07 01:25:00    NaN  NaN   NaN    NaN     NaN

As you can see, it adds a new record with the defined index and since we did not specify values for other columns, they are NaN

You can specify the values for one or more columns with a dict like this:

data = {'hour':10} 
df.append(pd.DataFrame(data, index=[last_date]))

Output:

                     count  day  hour  label  minute
2018-06-07 00:25:00  207.0  7.0   0.0  177.0    25.0
2018-06-07 00:55:00  187.0  7.0   0.0  150.0    55.0
2018-06-07 01:25:00    NaN  NaN   10.0    NaN     NaN
like image 116
harvpan Avatar answered Oct 21 '22 09:10

harvpan