簡體   English   中英

減去數據幀中的兩個值

[英]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.

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