在设定的时间范围内填写NaN

时间:2018-11-22 10:09:57

标签: python pandas

我需要Python帮助:

  1. 遍历我的数据集并找到列颜色中的第一个非NaN值,并将该值存储为Base_color
  2. 仅在底色之后5秒钟内,我要用底色填充所有NaN值
  3. 如果它在5秒钟内拾取了一种新颜色,我想将该颜色存储为基准色,并在5秒钟内用新发现的基准色替换所有新找到的base_color之后的所有NaN

这是我的数据集的一个示例:

 Name Color Emotion  Time
 Bob  NA    angry    2018-11-20 16:14:31

 Bob  NA    angry    2018-11-20 16:14:31

 Bob  red   sad      2018-11-20 16:14:31

 Bob  red   neutral  2018-11-20 16:14:31

 Bob  blue  sad      2018-11-20 16:14:32

 Bob  red   sad      2018-11-20 16:14:32

 Bob  NA    neutral  2018-11-20 16:14:33

 Bob  NA    neutral  2018-11-20 16:14:33

 Bob  NA    sad      2018-11-20 16:14:34

 Bob  blue  fear     2018-11-20 16:14:35

请帮助:)谢谢

1 个答案:

答案 0 :(得分:0)

要找到first_valid颜色,请使用:

valid_index = df['Color'].first_valid_index()
base_color = df['Color'][valid_index]

关于问题2和3:

for index, row in df.iterrows():
    if ((row['Time'] - df['Time'][valid_index]).dt.seconds < 5):
        if row['Color'] == np.nan:
            row['Color'] = base_color
        else:
            base_color = row['Color']
            valid_index = index