【问题标题】:How to Replace values in a pd dataframe column based on a condition with a range of values?如何根据具有一系列值的条件替换 pd 数据框列中的值?
【发布时间】:2020-05-18 11:23:26
【问题描述】:

我有一个data set,它的列名为“id”。现在在此列中,所有值应依次为 1 到 696,但 636 之后的值是 7***,我想替换所有这些值并将它们置于 637 到 696 的范围内。我该怎么做?我尝试了替换、.loc、where 等,但它不起作用。

【问题讨论】:

  • 你能分享你的代码和预期的输入和输出
  • 这些被替换的值是否应该遵循某种模式,或者只是在 637 和 696 之间随机出现?
  • 你能否对所有的值应用相同的操作(例如,减去 X 到它们?)。如果是这样,你可以试试这个:df[df['id']>636]['id'] = df[df['id']>636]['id'] - X
  • @CeliusStingher 它们应该在 637、638 到 696 的序列中。
  • @maxi.marufo 无法应用相同的操作,X 的值对于我想要获得的每个值都会不同。

标签: python pandas numpy dataframe replace


【解决方案1】:

简单地说,使用numpy.arange为连续整数重新分配id

df = (pd.read_csv("/path/to/data.csv")
        .assign(id = np.arange(1,697))
     )

【讨论】:

    【解决方案2】:

    简单地做

    import pandas as pd 
    
    df = pd.read_csv('input.csv')
    df['id'] = range(1,len(df)+1)
    

    如果您希望它从 0 开始,请执行以下操作:

    df['id'] = range(len(df))
    

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 1970-01-01
      • 2019-01-31
      • 1970-01-01
      • 2022-07-30
      • 1970-01-01
      • 2012-11-06
      • 2021-08-16
      • 1970-01-01
      相关资源
      最近更新 更多