2017-08-21 33 views
1

aggregateメソッドを使用せずに、インデックス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 

または2シリーズ連結:

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 
関連する問題