df=df['A']/df['A'].sum()与df['A']=df['A']/df['A'].sum()

40 阅读1分钟

df=df['A']/df['A'].sum()与df['A']=df['A']/df['A'].sum() 这两条语句分别对DataFrame(假设为df)的列 'A' 进行操作,但效果不同:

  1. df = df['A'] / df['A'].sum()

    • 这条语句将 'A' 列的每个元素除以 'A' 列所有元素的总和。结果会生成一个Series对象,而不是DataFrame。这是因为将 'A' 列的每个元素都除以一个标量值(总和)会产生一个Series,其中每个元素是 'A' 列对应位置的元素除以 'A' 列的总和。
  2. df['A'] = df['A'] / df['A'].sum()

    • 这条语句将 'A' 列的每个元素都除以 'A' 列所有元素的总和,并将结果赋值回 'A' 列。因此, 'A' 列的每个元素都会被相应的除以 'A' 列的总和,然后将这些新的值存储回 'A' 列。

因此,两条语句的主要区别在于输出结果的数据类型和影响范围:

  • 第一条语句会返回一个Series,而不是DataFrame。这意味着原始DataFrame df不会被修改,而是生成一个新的Series对象。

  • 第二条语句会修改原始DataFrame df 中 'A' 列的值。 'A' 列中的每个元素都会被除以 'A' 列的总和,并用这些新的值替换 'A' 列中原来的值。

因此,如果你想要在原始DataFrame上修改 'A' 列的值,应该使用第二条语句;如果你希望生成一个新的Series而不修改原始DataFrame,则使用第一条语句。