gpt4 book ai didi

python - 返回跳过 Pandas 中的 nan 值的排序索引?

转载 作者:行者123 更新时间:2023-11-28 17:48:05 25 4
gpt4 key购买 nike

我有以下数据集:

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)?

最佳答案

numpy.argsort 传递给 apply 方法,而不是直接使用它。这样,NaNs/NaTs 就会持续存在。对于您的示例:

In [2]: df_sequence[['RUN_START_DATE', 'PUSHUP_START_DATE', 'SITUP_START_DATE', 'PULLUP_START_DATE']].apply(numpy.argsort, axis=1)
Out[2]:
RUN_START_DATE PUSHUP_START_DATE SITUP_START_DATE PULLUP_START_DATE
0 1 0 NaN 2
(etc.)

关于python - 返回跳过 Pandas 中的 nan 值的排序索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15207279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com