各行がソートされたデータフレームを返したいと思います(降順としましょう)。したがって、次のpandas.DataFrame
名前がある場合data
:
In [38]: data
Out[38]:
c1 c2 c3 c4 c5 c6
Date
2012-10-22 0.973371 0.226342 0.968282 0.872330 0.273880 0.746156
2012-10-19 0.497048 0.351332 0.310025 0.726669 0.344202 0.878755
2012-10-18 0.315764 0.178584 0.838223 0.749962 0.850462 0.400253
2012-10-17 0.162879 0.068409 0.704094 0.712860 0.537545 0.009789
以下の返品を希望します。
In [39]: sorted_frame
Out[39]:
0 1 2 3 4 5
Date
2012-10-22 0.973371 0.968282 0.872332 0.746156 0.273880 0.226342
2012-10-19 0.878755 0.726669 0.497048 0.351332 0.344202 0.310025
2012-10-18 0.850462 0.838223 0.749962 0.400253 0.315764 0.178584
2012-10-17 0.712860 0.704094 0.537545 0.162879 0.068409 0.009789
私は試しましたDataFrame.sort(axis = 1)
が、それは望ましい結果を達成しません:
In [40]: data.sort(axis = 1)
Out[43]:
c1 c2 c3 c4 c5 c6
Date
2012-10-22 0.973371 0.226342 0.968282 0.872330 0.273880 0.746156
2012-10-19 0.497048 0.351332 0.310025 0.726669 0.344202 0.878755
2012-10-18 0.315764 0.178584 0.838223 0.749962 0.850462 0.400253
2012-10-17 0.162879 0.068409 0.704094 0.712860 0.537545 0.009789
私が探しているものを達成する次の関数を作成しました( を使用pandas.TimeSeries.order()
):
import numpy
def sorted_by_row(frame, ascending = False):
vals = numpy.tile(numpy.nan,frame.shape)
for row in numpy.arange(frame.shape[0]):
vals[row, :] = frame.ix[row, :].order(ascending = ascending)
return pandas.DataFrame(vals, index = frame.index)
ただし、私の目標は、メソッドで行単位の関数を使用できるようにすることDataFrame.apply()
です (そのため、作成した他の関数に目的の機能を適用できます)。私はもう試した:
#TimeSeries.order() sorts a pandas.TimeSeries object
data.apply(lambda x: x.order(), axis = 1)
しかし、繰り返しますが、私はDataFrame
上記の目的を達成していません (私は十分なDataFrame'
s を出力したので、ページの不動産を惜しみません)。
どうぞよろしくお願いいたします。
-B