分享
三行代码  ›  专栏  ›  技术社区  ›  VRumay

只替换同一列中的某些行

  •  0
  • VRumay  · 技术社区  · 5 天前

    给定一列:

    name 
    Jules
    Jules
    Jules
    Jules
    Vince
    

    Jules 对于 Quentin

    例如:

    name 
    Quentin
    Quentin
    Jules
    Jules
    Vince
    

    进一步的ellaborate,位置 朱尔斯 永远不会一样。

    countOfJules = df['name'].value_counts()['Jules']
    halfLenght = int(countoftbd/2)
    listed = df['name'].to_list()
    counter = 1
    
    for eachname in listed:
        if eachname == 'Jules' and counter <= halfLenght:
            listed[:] == 'Quentin'
            counter += 1
    
    2 回复  |  直到 5 天前
        1
  •  1
  •   Quang Hoang    5 天前

    很简单:

    # where name is Jules
    is_jules = df['name'].eq('Jules')
    
    # total `Jules` in `name`
    num_jules = is_jules.sum()
    
    # first half `Jules`
    first_half = is_jules.cumsum().le(num_jules//2)
    
    df.loc[is_jules & first_half, 'name'] = 'Quentin'
    

    输出:

          name
    0  Quentin
    1  Quentin
    2    Jules
    3    Jules
    4    Vince
    
        2
  •  0
  •   bisen2    5 天前

    通常用于访问数组子集(或列表、数据帧等)的术语是切片。这个 Pandas documentation has a nice section on slicing 以及访问数据帧的特定成员的其他方式。在您的例子中,看起来您是根据数组中的索引进行选择的,在这种情况下,您可以使用 df[start:stop] start stop 是要在之间访问的索引。