题:
True如果一天的第一次进入,我如何将熊猫数据帧中的填充布尔值转发到一天== True结束
请参阅以下示例和所需的输出。
数据:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'bool_col':[True,False,False,True,False,False,False,False,False],
'dates':pd.date_range('1/1/2011', periods=9, freq='8h')})
bool_col dates
0 True 2011-01-01 00:00:00
1 False 2011-01-01 08:00:00
2 False 2011-01-01 16:00:00
3 True 2011-01-02 00:00:00
4 False 2011-01-02 08:00:00
5 False 2011-01-02 16:00:00
6 False 2011-01-03 00:00:00
7 False 2011-01-03 08:00:00
8 False 2011-01-03 16:00:00
Run Code Online (Sandbox Code Playgroud)
期望输出:
bool_col dates
0 True 2011-01-01 00:00:00
1 True 2011-01-01 08:00:00
2 True 2011-01-01 16:00:00
3 True 2011-01-02 00:00:00
4 True 2011-01-02 08:00:00
5 True 2011-01-02 16:00:00
6 False 2011-01-03 00:00:00
7 False 2011-01-03 08:00:00
8 False 2011-01-03 16:00:00
Run Code Online (Sandbox Code Playgroud)
在2011-01-01和2011-01-02我们可以看到True是ffill,直到一天结束,但是,2011-01-03 00:00:00 有一False所以未进行变更。
我尝试了什么?
我尝试使用,ffill但无法按照我指定的标准使用它。
transform是一种基于 groupby 逻辑获得数据帧大小的结果系列的有效方法。下面的说明字面翻译为“每天分组,并查看 的第一个元素bool_col,如果是True,则整个组True保持该组”。
df.groupby(df.dates.dt.date).bool_col.transform(lambda g: True if g.iloc[0] else g)
Out[363]:
0 True
1 True
2 True
3 True
4 True
5 True
6 False
7 False
8 False
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
919 次 |
| 最近记录: |