小编Qiy*_*iyu的帖子

在Pandas中,.iloc方法是否提供副本或视图?

我发现结果有点随机.有时它是副本有时它是一个视图.例如:

df = pd.DataFrame([{'name':'Marry', 'age':21},{'name':'John','age':24}],index=['student1','student2'])

df
              age   name
   student1   21  Marry
   student2   24   John
Run Code Online (Sandbox Code Playgroud)

现在,让我尝试稍微修改一下.

df2= df.loc['student1']
df2 [0] = 23
df
              age   name
   student1   21  Marry
   student2   24   John
Run Code Online (Sandbox Code Playgroud)

如你所见,没有任何改变.df2是一个副本.但是,如果我将另一名学生添加到数据框中...

df.loc['student3'] = ['old','Tom']
df
               age   name
    student1   21  Marry
    student2   24   John
    student3  old    Tom
Run Code Online (Sandbox Code Playgroud)

尝试再次改变年龄..

df3=df.loc['student1']
df3[0]=33
df
               age   name
    student1   33  Marry
    student2   24   John
    student3  old    Tom
Run Code Online (Sandbox Code Playgroud)

现在df3突然成了一个观点.到底是怎么回事?我想价值'旧'是关键?

python dataframe pandas

16
推荐指数
2
解决办法
4528
查看次数

如何使用.agg方法计算pandas中的列平均值

我知道 .agg 可以很容易地用于计算平均值。例如,如果我有一个数据框 df:

df
       one  two  three
   A    1    2      3
   B    4    5      6
   C    7    8      9
Run Code Online (Sandbox Code Playgroud)

我想计算每列的平均值,我可以简单地这样做:

df.agg(np.average)
    one      4.0
    two      5.0
    three    6.0
    dtype: float64
Run Code Online (Sandbox Code Playgroud)

现在,假设我只对“一”的平均值感兴趣。直觉上,我是这样写的,我期待一个数字 4:

df.agg({'one':np.average})   #or df['one'].agg(np.average)
Run Code Online (Sandbox Code Playgroud)

但是,它返回第一列,而不是 4:

       one
    A  1.0
    B  4.0
    C  7.0
Run Code Online (Sandbox Code Playgroud)

为什么?

python dataframe pandas

6
推荐指数
1
解决办法
3万
查看次数

标签 统计

dataframe ×2

pandas ×2

python ×2