使用索引查找每列中的最小值

时间:2017-08-21 11:56:51

标签: pandas aggregation minimum

我想知道是否有任何方法可以使用其索引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'))

2 个答案:

答案 0 :(得分:3)

从头开始构建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

答案 1 :(得分:1)

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