2016-12-05 5 views
1

私は74列と1000行のデータフレームを持っています。私は1つの列と74行パンダのデータフレームの列ごとにn個の最小値を見つける方法

   1    2    3  
A   2013918.153207 2010286.148942 2010903.782339 
B   1694927.195604 1648518.272357 1665890.462014  
C   1548895.121455 1594033.016024 1589820.170989 

と転置データフレームがへの簡単な方法があり、これらの20個の値の平均値を計算し、結果を返す、列ごとに20の最小値(複数可)を見つけたいのですがPythonでこれを行いますか?

+1

したい[nsmallest](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.nsmallest.html#pandas.Series.nsmallest)について最初のポイント、他のすべては自明でなければならない、あなたはこれを試すことができますか、失敗した場合はあなたの努力を投稿してください – EdChum

答えて

0

あなたはmeanSeriesと何の作業(列)とnsmallestを使用するので、必要なことができapply

print (df.apply(lambda x: x.nsmallest(2).mean()).to_frame('val')) 
      val 
1 1.621911e+06 
2 1.621276e+06 
3 1.627855e+06 

numpyのソリューション

まず、列、行を選択することにより、ソート、numpy arrayに変換し、 meanを取得してください。最終使用DataFrameコンストラクタ:

arr = df.values 
arr.sort(axis=0) 
print (arr) 
[[ 1548895.121455 1594033.016024 1589820.170989] 
[ 1694927.195604 1648518.272357 1665890.462014] 
[ 2013918.153207 2010286.148942 2010903.782339]] 

print (np.mean(arr[:2,:], axis=0)) 
[ 1621911.1585295 1621275.6441905 1627855.3165015] 

print (pd.DataFrame({'val':np.mean(arr[:2,:], axis=0)}, index=df.columns)) 
      val 
1 1.621911e+06 
2 1.621276e+06 
3 1.627855e+06 
関連する問題