我想有条件地填写之前的值,比如ffill().

例如,如果[‘day’]列为‘None’,我想对Groupby应用[‘Close’]ffill().

我附上了下面的例子.

df = pd.DataFrame({'name' : ['AAPL','AAPL','AAPL','AAPL','AAPL','AAPL','MSFT','MSFT','MSFT','MSFT','MSFT','MSFT'],
                   'day' : [None,'Fri', None, None, 'Mon', 'Thue', None,'Fri', None, None, 'Mon', 'Thue',],
                   'close' : [np.nan, 174.49, np.nan, np.nan, 175.84, np.nan, np.nan, 128.11, np.nan, np.nan, 128.93, np.nan]
                   })

   # df
   # Out[46]: 
   # AAPL  None     NaN
   # AAPL   Fri  174.49
   # AAPL  None     NaN
   # AAPL  None     NaN
   # AAPL   Mon  175.84
   # AAPL  Thue     NaN
   # MSFT  None     NaN
   # MSFT   Fri  128.11
   # MSFT  None     NaN
   # MSFT  None     NaN
   # MSFT   Mon  128.93
   # MSFT  Thue     NaN



# What I wannt
#    name   day   close
#    AAPL  None     NaN
#    AAPL   Fri  174.49
#    AAPL  None  174.49 <- if 'day' is None then wnat to ffill() 
#    AAPL  None  174.49 <- if 'day' is None then wnat to ffill() 
#    AAPL   Mon  175.84
#    AAPL  Thue     NaN
#    MSFT  None     NaN
#    MSFT   Fri  128.11
#    MSFT  None  128.11 <- if 'day' is None then wnat to ffill() 
#    MSFT  None  128.11 <- if 'day' is None then wnat to ffill() 
#    MSFT   Mon  128.93
#    MSFT  Thue     NaN

推荐答案

向前填充每只股票close的值,然后使用布尔索引更新其中day为无的值

m = df['day'].isna()
df.loc[m, 'close'] = df.groupby('name')['close'].ffill()

    name   day   close
0   AAPL  None     NaN
1   AAPL   Fri  174.49
2   AAPL  None  174.49
3   AAPL  None  174.49
4   AAPL   Mon  175.84
5   AAPL  Thue     NaN
6   MSFT  None     NaN
7   MSFT   Fri  128.11
8   MSFT  None  128.11
9   MSFT  None  128.11
10  MSFT   Mon  128.93
11  MSFT  Thue     NaN

Python相关问答推荐

为什么Pydantic在我申报邮箱时说邮箱丢失

两极按组颠倒顺序

如何处理必须存在于环境中但无法安装的Python项目依赖项?

Plotly:如何更改Heatmap中彩色条的勾选文本

Numpy索引argsorted使用integer数组,同时保留排序顺序

使用Python Cerberus初始化一个循环数据 struct (例如树)(v1.3.5)

使用图片生成PDF Django rest框架

当值是一个integer时,在Python中使用JMESPath来验证字典中的值(例如:1)

symy.分段使用numpy数组

根据网格和相机参数渲染深度

根据给定日期的状态过滤查询集

使用miniconda创建环境的问题

运行总计基于多列pandas的分组和总和

为什么符号没有按顺序添加?

如何制作10,000年及以后的日期时间对象?

转换为浮点,pandas字符串列,混合千和十进制分隔符

mypy无法推断类型参数.List和Iterable的区别

在极中解析带有数字和SI前缀的字符串

如何排除prefecture_related中查询集为空的实例?

以逻辑方式获取自己的pyproject.toml依赖项