最小値が取得されるデータフレームの名前

moys:

私は以下のように3データフレームを持っています。

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    val3
1          2    33333
11        22    33333
111       23    3333
1111      24    333
11111     25    33
11111     26    3
df2 = 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    val3
2         1     3
22       11     3
23      111     3
24     1111     3
25    11111     3
26    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    val3
33333      3    2
33333      3    22
3333       3    23
333     3333    24
33         3    25
3          3    26

コードではpd.concat([df1,df2,df3]).min(level=0)、私はこれらの3つのデータフレームの各セルの最小値を持つdateframeを取得します

val     val2    val3
1         1     2
11        3     3
23        3     3
24       24     3
25        3     3
3         3     3

さて、私の質問は、そこからから来ているこれらの個々の値をDATAFRAME番組データフレームを取得する方法はありますか?アウトプット予想は以下の通りです

val     val2    val3
df1     df2     df3
df1     df3     df2
df2     df3     df2
df2     df1     df2
df2     df3     df2
df3     df3     df1,df2

これはパンダでさえ可能ですか?

クリス:

使い方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

あなたはネクタイ、使用したくない場合は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]])

それとも、それはきれいにビットします:

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')

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=13275&siteId=1