3
我有以下數據集:返回在pandas中跳過nan值的排序索引?
PID,RUN_START_DATE,PUSHUP_START_DATE,SITUP_START_DATE,PULLUP_START_DATE
1,2013-01-24,2013-01-02,,2013-02-03
2,2013-01-30,2013-01-21,2013-01-13,2013-01-06
3,2013-01-29,2013-01-28,2013-01-01,2013-01-29
4,2013-02-16,2013-02-12,2013-01-04,2013-02-11
5,2013-01-06,2013-02-07,2013-02-25,2013-02-12
6,2013-01-26,2013-01-28,2013-02-12,2013-01-10
7,2013-01-26,,2013-01-12,2013-01-30
8,2013-01-03,2013-01-24,2013-01-19,2013-01-02
9,2013-01-22,2013-01-13,2013-02-03,
10,2013-02-06,2013-01-16,2013-02-07,2013-01-11
我知道我可以使用numpy.argsort
返回值的排序指標:
SQ_AL_INDX = numpy.argsort(df_sequence[['RUN_START_DATE', 'PUSHUP_START_DATE', 'SITUP_START_DATE', 'PULLUP_START_DATE']], axis=1)
... ...回報
RUN_START_DATE PUSHUP_START_DATE SITUP_START_DATE PULLUP_START_DATE
0 2 1 0 3
1 3 2 1 0
2 2 1 0 3
3 2 3 1 0
4 0 1 3 2
5 3 0 1 2
6 1 2 0 3
7 3 0 2 1
8 3 1 0 2
9 3 1 0 2
但是,它似乎把pandas.NaT
值放入第一位置。因此,在此示例where PID == 1
中,排序順序返回2 1 0 3
。但是,第二個指數位置是pandas.Nat
的值。
我怎樣才能得到分類指標,而跳過pandas.NaT
值(例如,返回索引值將2 1 np.NaN 3
或2 1 pandas.NaT 3
或更好,但1 0 2
爲PID 1
,而不是2 1 0 3
)?
非常感謝您的幫助!當我運行代碼時,我得到了一些奇怪的結果,並在它們上面加上NaT。對於第0行,我得到以下內容:0 1970-01-01 00:00:00 1970-01-01 00:00:00 2262-04-10 0:12:43.145224 1970-01-01 00:00:00。第6行和第8行也是錯誤的。我已將我的代碼和全部結果放在pastebin中:http://pastebin.com/qhhZzRGr – BigHandsome 2013-03-04 20:31:51
可以顯示df.dtypes和您的熊貓版本嗎?這應該工作在0.11,可能不會在0.10.1;嘗試使用當前的主設備,如果可以的話 – Jeff 2013-03-04 23:44:05
@jeff,原始設備是datetime64 [ns],apply之後的返回索引是對象。我可以使用版本0.11.0.dev-3790f16。 – BigHandsome 2013-03-05 01:07:37