2017-08-21 33 views
1

我不知道是否有任何方法,我可以用它來獲取每個列中的最小值與其索引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')) 
+0

什麼是您預期的輸出?請舉一些例子。 –

+0

我已經提供了所有的代碼來獲得輸出! –

+0

'(df.agg(['min','idmin'])。T)'不起作用? –

回答

3

構建一個從無到有的數據幀:

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 

或CONCAT兩個系列:

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
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 
相關問題