[英]subtract two values in dataframe
我有一個數據框 (df),它有 2 列,名稱為 [1,2],我使用以下代碼添加了另外 2 列:最大和第二大的列,顯示在每一行的最高數字和第二大數字。
df = RSRP_per_sec(2)
df2=df.copy()
df2['highest']=0
df2['second_highest']=0
for i in range(len(df)):
l=sorted([(x, df.iloc[i][x]) for x in df.columns], key=lambda y: y[1])
df2['highest'].iloc[i]=l[-1][0]
df2['second_highest'].iloc[i]=l[-2][0]
現在 df 數據框是這樣的,其中列是 ['1','2','highest','second_highest'] 並顯示第一行:
1 2 highest second_highest
-86 -102 1 2
現在我想再添加一列,通過檢查每一行哪一列是最高的,哪一列是第二列,並從彼此中減去它們來計算最高和第二高之間的差異。
注意:對於我的情況,現在很容易,因為只有 2 列要減去,但我想擴展最高和第二高列將具有不同值的列數。
獲取列值並使用它們來索引相應的列:
df["diff_highest"] = df[str(df["highest"].values[0])] - df[str(df["second_highest"].values[0])]
順便說一句,您還可以通過對每一行使用 .sort_values() 來獲得兩個最高值:
df["1"] = [-86]
df["2"] = [-102]
df["3"] = [12]
df["highest"] = [None]
df["second_highest"] = [None]
df.iloc[0].sort_values(ascending=False).dropna().index[:2]
產出
Index(['3', '1'], dtype='object')
我建議將“highest”和“second_highest”設置為 None ,這樣它就不會與排序沖突。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.