簡體   English   中英

如何生成一個新列,從 pandas DataFrame 中的原始列中減去已排序的列?

[英]How do I generate a new column subtracting the sorted one from the original in a pandas DataFrame?

這是我的 pandas 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 默認按索引值對齊,所以在減去原始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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM