我有一张桌子
| ID | name | Age | Salary | Sex
2 | Tom | 20 | 30000 | 1
3 | Ken | 25 | 40000 | 2
5 | Gen | 50 | 80000 | 2
6 | Per | 20 | 60000 | 1
之前的信息:我已经检查了我的ID,Age,性别列是否为int64数据类型,但Salary数据类型为float。
我想计算平均工资的年龄。
我的代码是
tableA.groupby(['Age']).mean()
结果出来
| ID | Sex
Age
20 | 4 | 1
25 | 3 | 2
50 | 5 | 2
然后我意识到我的薪水数据类型是float而不是int64,因此薪水平均值不显示,所以我通过
将其转换为int65tableA['Salary'] = tableA['Salary'].astype(np.int64)
#But I got warning:A value is trying to be set on a copy of a slice from a DataFrame.
#Try using .loc[row_indexer,col_indexer] = value instead
我按组分组,并根据年龄计算平均工资 通过
tableA.groupby(['Age'])['Salary'].mean()
|
Age
20 | 4.500000e+04
25 | 6.000000e+04
50 | 8.000000e+04
我的预期结果是
| Salary
Age
20 | 45000
25 | 60000
50 | 80000
我已经将Salary类型转换为int64了,为什么还仍然使数据看起来像float?如何使用Salary列名获得预期的结果(稍后我需要创建一个图)?谢谢
答案 0 :(得分:1)
很高兴提供帮助。我建议两件事。
一个:在操作后更改类型。
table = df.groupby(['Age'])['Salary'].mean().astype(int) #this should work
二:将类型更改为float而不是numpy的int64。
tableA['Salary'] = tableA['Salary'].astype(float)
table = df.groupby(['Age'])['Salary'].mean()
请告诉我这是否可行。
答案 1 :(得分:0)