代码之家  ›  专栏  ›  技术社区  ›  Saturnix

替换列中的所有值(无条件)

  •  0
  • Saturnix  · 技术社区  · 6 年前

    对于这个问题,假设我不知道这个列有多长,也不想迭代它的值。

    使用 .replace() 不合适,因为我不知道该列中有哪些值:我希望无条件地替换所有值。

    使用 df.loc[<row selection>, <column selection>] data.loc[True, 'ColumnName'] = new_value KeyError(True,) . 我试过了 data.loc[1, 'ColumnName'] = new_value 它是有效的,但看起来真的是一个糟糕的解决方案。

    如果我知道 len() 属于 data['ColumnName'] 我可以创建一个这样大小的数组,填充我的时间 new_value 只需将列替换为该数组。10行代码来做一些比需要1行代码(有条件地这样做)更简单的事情:这也是不行的。

    ColumnName 新的\u值

    2 回复  |  直到 6 年前
        1
  •  5
  •   Vishnu Kunchur    6 年前

    正如我在评论中解释的,您不需要创建数组。 假设你有 df :

      InvoiceNO Month  Year Size
    0         1     1     2    7
    1         2     1     2    8
    2         3     2     2   11
    3         4     3     2    9
    4         5     7     2  8.5
    

    InvoiceNO 1234 :

    df['InvoiceNO'] = 1234
    

       InvoiceNO Month  Year Size
    0       1234     1     2    7
    1       1234     1     2    8
    2       1234     2     2   11
    3       1234     3     2    9
    4       1234     7     2  8.5
    
        2
  •  1
  •   yoonghm    6 年前
    import pandas as pd
    
    df = pd.DataFrame(
       {'num1'        : [3, 5, 9, 9, 14, 1],
        'num2'        : [3, 5, 9, 9, 14, 1]},
         index=[0, 1, 2, 3, 4, 5])
    print(df)
    print('\n')
    df['num1'] = 100
    print(df)
    df['num1'] = 'Hi'
    print('\n')
    print(df)
    

    输出为

      num1  num2
    0     3     3
    1     5     5
    2     9     9
    3     9     9
    4    14    14
    5     1     1
    
    
       num1  num2
    0   100     3
    1   100     5
    2   100     9
    3   100     9
    4   100    14
    5   100     1
    
    
      num1  num2
    0   Hi     3
    1   Hi     5
    2   Hi     9
    3   Hi     9
    4   Hi    14
    5   Hi     1