首页 文章

将带有datetime索引的行插入到dataframe中

提问于
浏览
1

我有一个带有日期时间索引的数据框:

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

而我正在尝试添加一些新记录,但我得到:

[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

我只想添加一个30分钟的间隔记录,我的代码是这样的

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?

1 回答

  • 3

    插入新记录的正确方法是:

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

    例:

    print(df)
    

    输出:

    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
    

    要添加元素,请使用.append()

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

    输出:

    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
    

    正如您所看到的,它使用已定义的索引添加了一条新记录,因为我们没有为其他列指定值,所以它们是 NaN

    您可以使用 dict 指定一个或多个列的值,如下所示:

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

    输出:

    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
    

相关问题