【发布时间】:2019-06-03 08:29:00
【问题描述】:
我有一个名为 df 的数据框,看起来与此类似(除了“日期”列的数量上升到 Date_8 并且有数百个客户端 - 我在这里对其进行了简化)。
Client_ID Date_1 Date_2 Date_3 Date_4
C1019876 relationship no change no change no change
C1018765 no change single no change no change
C1017654 single no change relationship NaN
C1016543 NaN relationship no change single
C1015432 NaN no change single NaN
我想创建两个新列,first_status 和 last_status。 first_status 应该等于 4 个日期列中的第一个给定关系状态,即第一个响应是 relationship 或 single,而 last_status 应该等于 4 个日期列中的最后一个给定关系状态。生成的 df 应如下所示。
Client_ID Date_1 Date_2 Date_3 Date_4 first_status last_status
C1019876 relationship no change no change no change relationship relationship
C1018765 no change single no change no change single single
C1017654 single no change relationship NaN single relationship
C1016543 NaN relationship no change single relationship single
C1015432 NaN no change single NaN single single
我认为这两个列可以通过列表理解创建,但我不知道如何。对于first_status 列,我想代码会在df 的每一行上执行以下操作:
- 查找给定值的第一个
Date列(过滤掉NaN) - 如果值 =
no change,则转到下一个Date列 - 如果值 =
relationship,first_status=relationship - 如果值 =
single,first_status=single
对于last_status 列,我想代码会在df 的每一行上执行以下操作:
- 查找给定值的最后一个
Date列(过滤掉 NaN) - 如果值=
no change,则转到上一列Date - 如果值 =
relationship,last_status=relationship - 如果值 =
single,last_status=single
【问题讨论】:
标签: python pandas loops iteration list-comprehension