熊猫:在每个时间序列中找到第一次出现的事件

时间:2016-07-04 18:28:49

标签: python pandas time-series

我正在努力解决这个问题。我想迭代数据帧列中的值,并在每天看到值时返回第一个实例。 Groupby看起来是个不错的选择,但是当使用df.groupby(grouper).first()并且每天设置grouper时,会看到以下输出。

In [95]:
df.groupby(grouper).first()

Out[95]:
            test_1
2014-03-04     1.0
2014-03-05     1.0

这只是在测试_1中看到值的那一天,而不是每天重置第一个(),这是我需要的(见下面所需的输出)。

我希望以下列格式保留此值的时间:

这是输入数据帧:

                  test_1
2014-03-04 09:00:00 NaN
2014-03-04 10:00:00 NaN
2014-03-04 11:00:00 NaN
2014-03-04 12:00:00 NaN
2014-03-04 13:00:00 NaN
2014-03-04 14:00:00 1.0
2014-03-04 15:00:00 NaN
2014-03-04 16:00:00 1.0
2014-03-05 09:00:00 1.0

这是所需的输出:

                 test_1  test_output
2014-03-04 09:00:00 NaN NaN
2014-03-04 10:00:00 NaN NaN
2014-03-04 11:00:00 NaN NaN
2014-03-04 12:00:00 NaN NaN
2014-03-04 13:00:00 NaN NaN
2014-03-04 14:00:00 1.0 1.0
2014-03-04 15:00:00 NaN NaN
2014-03-04 16:00:00 1.0 NaN
2014-03-05 09:00:00 1.0 NaN

我只想在名为test_output的新列中标记事件首次出现的时间。

管理员。请注意,此问题与另一个标记为重复的问题不同,因为这需要首次出现滚动。

1 个答案:

答案 0 :(得分:0)

尝试使用此数据:

ArrayList<Obj> objects = new ArrayList<>();

Obj a=new Obj("smth", "Note: na, na, na", R.drawable.image1);
objects.add(a);
a=new Obj("smth", "Note: na, na, na", R.drawable.image2);
objects.add(a);
a=new Obj("smth", "Note: na, na, na", R.drawable.image3);
objects.add(a);

输出是这样的:

rng = pd.DataFrame( {'test_1': [None, None,None, None, 1,1, 1 , None, None, None,1 , None, None, None,]},  index = pd.date_range('4/2/2014', periods=14, freq='BH'))
rng

                    test_1
2014-04-02 09:00:00     NaN
2014-04-02 10:00:00     NaN
2014-04-02 11:00:00     NaN
2014-04-02 12:00:00     NaN
2014-04-02 13:00:00     1.0
2014-04-02 14:00:00     1.0
2014-04-02 15:00:00     1.0
2014-04-02 16:00:00     NaN
2014-04-03 09:00:00     NaN
2014-04-03 10:00:00     NaN
2014-04-03 11:00:00     1.0
2014-04-03 12:00:00     NaN
2014-04-03 13:00:00     NaN
2014-04-03 14:00:00     NaN