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

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

取最小值的數(shù)據(jù)幀的名稱

取最小值的數(shù)據(jù)幀的名稱

茅侃侃 2022-07-19 17:08:02
我有3個(gè)數(shù)據(jù)框如下。df1 = pd.DataFrame( {"val" : [1, 11, 111, 1111, 11111, 11111],                    "val2" : [2, 22, 23, 24, 25, 26],"val3" : [33333, 33333, 3333, 333, 33, 3]} )val     val2    val31          2    3333311        22    33333111       23    33331111      24    33311111     25    3311111     26    3df2 = pd.DataFrame( {"val" : [2, 22, 23, 24, 25, 26],"val2" : [1, 11, 111, 1111, 11111, 11111],"val3" : [3, 3, 3, 3, 3, 3] } )val     val2    val32         1     322       11     323      111     324     1111     325    11111     326    11111     3&df3 = pd.DataFrame( {"val" : [33333, 33333, 3333, 333, 33, 3],"val2" : [3, 3, 3, 3333, 3, 3],"val3" : [2, 22, 23, 24, 25, 26] } )val     val2    val333333      3    233333      3    223333       3    23333     3333    2433         3    253          3    26使用代碼pd.concat([df1,df2,df3]).min(level=0),我得到一個(gè)日期幀,其中包含這 3 個(gè)數(shù)據(jù)幀的每個(gè)單元格的最小值val     val2    val31         1     211        3     323        3     324       24     325        3     33         3     3現(xiàn)在,我的問題是有沒有辦法獲得一個(gè)數(shù)據(jù)框,該數(shù)據(jù)框顯示這些單獨(dú)的值來自哪個(gè)數(shù)據(jù)框?預(yù)期輸出如下val     val2    val3df1     df2     df3df1     df3     df2df2     df3     df2df2     df1     df2df2     df3     df2df3     df3     df1,df2這在 Pandas 中是否可行?
查看完整描述

3 回答

?
米脂

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

使用numpy.ma.apple_along_axis:


def min_finder(arr1d,sep=","):

    return ",".join(["df%s" % i for i in np.argwhere(arr1d == arr1d.min()).ravel()+1])


new_df = pd.DataFrame(np.ma.apply_along_axis(min_finder, 2, np.stack(dfs, 0)).T)

print(new_df)


     0    1        2

0  df1  df2      df3

1  df1  df3      df2

2  df2  df3      df2

3  df2  df3      df3

4  df2  df3      df2

5  df3  df3  df1,df2

如果您不想打領(lǐng)帶,請使用numpy.argmin:


dfs = [df1,df2,df3]

np.stack(dfs, 0).argmin(0)

輸出:


array([[0, 1, 2],

       [0, 2, 1],

       [1, 2, 1],

       [1, 0, 1],

       [1, 2, 1],

       [2, 2, 0]])

或者讓它更漂亮一點(diǎn):


np.char.add("df", (np.stack(dfs, 0).argmin(0)+1).astype(str))


array([['df1', 'df2', 'df3'],

       ['df1', 'df3', 'df2'],

       ['df2', 'df3', 'df2'],

       ['df2', 'df1', 'df2'],

       ['df2', 'df3', 'df2'],

       ['df3', 'df3', 'df1']], dtype='<U23')


查看完整回答
反對 回復(fù) 2022-07-19
?
慕斯王

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

這是一種基本方法,將值映射到其數(shù)據(jù)幀的名稱,找到分鐘,然后丟棄值:


(pd.concat([df1.applymap(lambda a: (a, 'df1')),

            df2.applymap(lambda a: (a, 'df2')),

            df3.applymap(lambda a: (a, 'df3'))])

   .min(level=0)

   .applymap(lambda a: a[1]))


   val val2 val3

0  df1  df2  df3

1  df1  df3  df2

2  df2  df3  df2

3  df2  df1  df2

4  df2  df3  df2

5  df3  df3  df1

請注意,將在值相等的地方返回按名稱的第一個(gè)數(shù)據(jù)幀。


查看完整回答
反對 回復(fù) 2022-07-19
?
千巷貓影

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

這是使用字典和df.isin后跟數(shù)據(jù)透視表的一種方法,可能有點(diǎn)冗長,因?yàn)槲以跍y試時(shí)可能會搖擺不定,但確實(shí)可以


dict_of_dfs = {'df1':df1,'df2':df2,'df3':df3}

concated = pd.concat(dict_of_dfs.values())

a = np.vstack([np.where(v.isin(concated.min(level=0)),k,np.nan) 

              for k,v in dict_of_dfs.items()])

b = pd.DataFrame(a,columns=concated.columns,index=concated.index).replace('nan',np.nan)

print(b.head(10))


    val val2 val3

0  df1  NaN  NaN

1  df1  NaN  NaN

2  NaN  NaN  NaN

3  NaN  df1  NaN

4  NaN  NaN  NaN

5  NaN  NaN  df1

0  NaN  df2  NaN

1  NaN  NaN  df2

2  df2  NaN  df2

3  df2  NaN  df2

然后使用pivot_table(當(dāng)然您可以進(jìn)行自定義更改以刪除額外的級別并重命名索引)


final = b.stack().reset_index()

final.pivot_table(index='level_0',columns='level_1',values=0,aggfunc=','.join)

level_1  val val2     val3

level_0                   

0        df1  df2      df3

1        df1  df3      df2

2        df2  df3      df2

3        df2  df1      df2

4        df2  df3      df2

5        df3  df3  df1,df2


查看完整回答
反對 回復(fù) 2022-07-19
  • 3 回答
  • 0 關(guān)注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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