使用索引在每列中找到最小值

Find the minimum value in each column with their index

我想知道是否有任何方法可以在不使用聚合方法的情况下使用其索引 id 获取每列中的最小值 (df.agg(['min','idmin']).T) 这个代码?!!

dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))

def minVal(x):
    return pd.Series(index=['min','idx'],data=[x.min(),x.idxmin()])

x = df.apply(minVal)

print(x)

          A                 B                      C                   D
min -0.743023394642       -1.05144770539       -2.1311363065        -1.02142276427
idx 2013-01-05 00:00:00   2013-01-04 00:00:00  2013-01-03 00:00:00  2013-01-06 00:00:00

您也可以对 x 进行转置以获得数据的要点。

print(x.T)

      min            idx
A  -0.657701  2013-01-05 00:00:00
B   -1.37038  2013-01-03 00:00:00
C   -1.93103  2013-01-03 00:00:00
D   -1.49314  2013-01-05 00:00:00

从头开始构建 DataFrame:

pd.DataFrame({'min': df.min(), 'idxmin': df.idxmin()})

       min     idxmin
A -1.106929 2013-01-03
B -0.642583 2013-01-06
C -1.350638 2013-01-04
D -0.213750 2013-01-06

或连接两个系列:

pd.concat((df.min(), df.idxmin()), axis=1).rename(columns={0: 'min', 1: 'idxmin'})
Out: 
        min     idxmin
A -1.106929 2013-01-03
B -0.642583 2013-01-06
C -1.350638 2013-01-04
D -0.213750 2013-01-06