我发现结果有点随机.有时它是副本有时它是一个视图.例如:
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突然成了一个观点.到底是怎么回事?我想价值'旧'是关键?
我知道 .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)
为什么?