熊猫根据传入的实时数据的索引为新行分配值

时间:2018-11-20 01:46:31

标签: python pandas

我在编写有效的代码(没有很多循环)时遇到麻烦,该代码将值每分钟左右更新一次的pandas数据框中的单元(实时流)。在训练集中,我用一个热编码的时间戳变量训练了我的模型,它比连续变量做得更好,所以这就是我要用于生产的东西。数据框如下所示:

datetime              DOW_1     DOW_2    ... DOW_7    Month1   Month2   Month3 
`2018-07-01 09:30:00`  0          1            0         0       0        1

如您所见,这些列用0和1编码,以表示星期几,星期几(并且我还有更多的年份,is_holiday等列)。在培训,验证时,我很容易做到这一点,并使用pd.get_dummies测试数据,但是现在已经有了实时数据流,我找不到基于df.index.month

来“分配” month2 = 0的简便方法

我尝试按照这种循环的方式做一些事情,但这非常乏味且缓慢。

i=0
while i < len(df):
    for m in range(1,13):
        if df.index.iloc[i].month == m:
            df['Month'+str(m)][i] = 1
            i+=1
        else:
            i+=1

还有更好的建议吗?

1 个答案:

答案 0 :(得分:1)

我仍在考虑一种解决方案,甚至可以删除for,但是您至少可以使用.loc来避免len(df)时出现外部问题:

for m in range(1, 13):
    df.loc[df.index.month == m, 'Month'+str(m)] = 1