2016-05-05 10 views
2

このコードが機能しない理由を理解できません。私はラムダでdf.applyを練習しています。私は出力がソートされたdfであることを期待しています。ありがとう。私はこのpandas dataframe.apply(lambda)の問題点は何ですか?

df = pd.DataFrame(data, columns = col)  
t = df.apply(lambda x: x.sort_values()) 

>>> df  
      A   B   C   D   E 
0 1.548097 0.682373 -1.254562 -0.249815 0.002013 
1 -2.581173 0.946034 -1.389210 -0.877128 -1.569914 
2 -0.980636 1.555700 -1.346029 0.180983 1.112470 
3 0.724657 0.520718 0.122696 1.386643 0.060714 
4 -0.119740 -0.665260 -1.085457 0.699085 1.149364 
5 -0.004628 -0.479672 -0.641696 0.875471 0.826836 
6 0.598497 -0.018560 -1.002511 0.478659 0.463565 
7 -0.005159 -0.137165 -0.460209 0.284940 0.755981 
8 0.576421 0.098833 -2.664028 0.118074 -0.426393 
9 -0.223696 -0.589748 -0.733454 -0.254564 -0.519015 

>>> t 
      A   B   C   D   E 
0 1.548097 0.682373 -1.254562 -0.249815 0.002013 
1 -2.581173 0.946034 -1.389210 -0.877128 -1.569914 
2 -0.980636 1.555700 -1.346029 0.180983 1.112470 
3 0.724657 0.520718 0.122696 1.386643 0.060714 
4 -0.119740 -0.665260 -1.085457 0.699085 1.149364 
5 -0.004628 -0.479672 -0.641696 0.875471 0.826836 
6 0.598497 -0.018560 -1.002511 0.478659 0.463565 
7 -0.005159 -0.137165 -0.460209 0.284940 0.755981 
8 0.576421 0.098833 -2.664028 0.118074 -0.426393 
9 -0.223696 -0.589748 -0.733454 -0.254564 -0.519015 

答えて

2

DFソートされ、新たなデータフレームtを作成したい

import pandas as pd 
import numpy as np 

data = np.random.randn(10,5) 
col = list('ABCDE') # assign column names 

私はあなたの質問があると仮定しています:なぜあなたのコードは、あなたが望んでいた何をしないのですか?

.apply(lambda x: x.sort_values())は何をしますか?ただし、このラムダの戻り値の型はpd.Seriesであり、インデックスが保持されています。すべての列を再結合するとき、パンダはインデックスが並んでいることを保証します。したがって、今行った並べ替えを削除します。その行動を打破するには、値を取得してください(インデックスなし)

df.apply(lambda x: x.sort_values().values) 
+0

あなたの解決策にはスポットがあります。これを明確にしてくれてありがとう。 –

関連する問題