第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

獲取不同列的平均值

獲取不同列的平均值

有只小跳蛙 2022-06-28 10:17:03
我有一個(gè)如下所示的數(shù)據(jù)框。中的元素col_1與 中的元素相連col_2,給出 中的結(jié)果output_1。但是,col_2現(xiàn)在col_1也有一些元素。例如,雖然a-->b= 3,b-->a= 24。col_1   col_2   output_1    averagea        b       3            13.5   (because a-->b=3 and b-->a=24)a        c       5             3.5   (because a-->c=5 and c-->a=2)a        d       3      b        a       24     b        c       12     b        d       5      c        a       2      c        b       3      c        d       5我需要的是計(jì)算這兩個(gè)值的平均值,當(dāng)然還有整個(gè)數(shù)據(jù)幀中的所有類(lèi)似情況。你可以想象這樣的數(shù)據(jù):人們?cè)赾ol_1呼喚人們col_2。輸出是duration. 我想計(jì)算每對(duì)人之間的平均持續(xù)時(shí)間。 col_1并col_2具有字符串值,而第三列“輸出”具有數(shù)值。我試過(guò)使用pd.merge(df.col_1, df.col_2)但沒(méi)有用。任何建議將不勝感激。
查看完整描述

4 回答

?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊

我會(huì)使用 numpy 廣播:


i,j=np.where((df.col_1+df.col_2).values==(df.col_2+df.col_1).values[:,None])


average=0.5*(df.iloc[i].output_1.reset_index(drop=True)+\

         df.iloc[j].output_1.reset_index(drop=True))


average.index=df.iloc[i].index

df['average']=average

我得到的結(jié)果如下:


  col_1 col_2  output_1  average

0     a     b         3     13.5

1     a     c         5      3.5

2     a     d         3      NaN

3     b     a        24     13.5

4     b     c        12      7.5

5     b     d         5      NaN

6     c     a         2      3.5

7     c     b         3      7.5

8     c     d         5      NaN


查看完整回答
反對(duì) 回復(fù) 2022-06-28
?
繁華開(kāi)滿天機(jī)

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊

嘗試這個(gè)。col_12您可以刪除列,也可以將其進(jìn)一步用作一對(duì)唯一鍵(與元素順序無(wú)關(guān))。


print(df)


df["col_12"]=df[["col_1", "col_2"]].apply(lambda x: str(sorted(x)), axis=1)

df2=df.groupby(df["col_12"]).agg({"output_1": "mean", "col_1": "count"}).rename(columns={"output_1": "output_1_mean", "col_1": "rows_count"})


df2.loc[df2["rows_count"]==1, "output_1_mean"]/=2

df2.drop("rows_count", axis=1, inplace=True)

df=df.join(df2, on="col_12")


print(df)

并輸出:


col_1 col_2  output_1

0     a     b         3                                     

1     a     c         5                                     

2     a     d         3                                     

3     b     a        24                                     

4     b     c        12                                     

5     b     d         5                                     

6     c     a         2                                     

7     c     b         3                                     

8     c     d         5


col_1 col_2  output_1      col_12  output_1_mean          

0     a     b         3  ['a', 'b']           13.5          

1     a     c         5  ['a', 'c']            3.5          

2     a     d         3  ['a', 'd']            1.5          

3     b     a        24  ['a', 'b']           13.5          

4     b     c        12  ['b', 'c']            7.5          

5     b     d         5  ['b', 'd']            2.5          

6     c     a         2  ['a', 'c']            3.5          

7     c     b         3  ['b', 'c']            7.5          

8     c     d         5  ['c', 'd']            2.5          

[Program finished]


查看完整回答
反對(duì) 回復(fù) 2022-06-28
?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

已編輯


你可以試試


for ii in a['col_1'].unique():

    p = pd.merge(a[a['col_1'] == ii], a[a['col_2'] == ii], left_on = 'col_2', right_on = 'col_1', left_index = True)

    a.loc[p.index, 'mean'] = p.mean(axis = 1)

感謝@baccandr 的更正


查看完整回答
反對(duì) 回復(fù) 2022-06-28
?
繁星點(diǎn)點(diǎn)滴滴

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊

你可以試試.mean()。單擊此處獲取文檔。

嘗試這個(gè) :df['average']=df[['col_1','col_2']].mean(axis=1)


查看完整回答
反對(duì) 回復(fù) 2022-06-28
  • 4 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)