这是我的熊猫DataFrame
>>> df
grades
0 69.233627
1 70.130900
2 83.357011
3 88.206387
4 74.342212
排序给这个
df.sort_values(by=['grades'])
grades
0 69.233627
1 70.130900
4 74.342212
2 83.357011
3 88.206387
我试图获得一个新列difference
,该列的每一行的值都等于从原始行减去已排序行的差。
但是,此代码不起作用
df['difference'] = df - df.sort_values(by=['grades'])
给我
grades
0 0.0
1 0.0
2 0.0
3 0.0
4 0.0
我想念什么?
可以预料,因为默认情况下,epandas按索引值对齐,因此在通过original减去reorder之前df.index
,请获取0
值。为了防止可能将值转换为numpy数组并仅减去,Series
如下所示:
df['difference'] = df['grades'] - df['grades'].sort_values().to_numpy()
如果DataFrame
也可以使用原始的默认索引,则将索引设置为RangeIndex,例如:
df['difference'] = df['grades'] - df['grades'].sort_values().reset_index(drop=True)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句