【问题标题】:Filling in NaN for a set time range在设定的时间范围内填充 NaN
【发布时间】:2018-11-22 10:09:56
【问题描述】:

我需要 Python 方面的帮助:

  1. 遍历我的数据集并在列颜色中找到第一个非 NaN 值并将该值存储为 Base_color
  2. 我想在 Base_color 之后的 5 秒范围内填充所有 NaN 值,前提是这些值是 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

请帮忙 :) 谢谢

【问题讨论】:

  • 请不要共享代码或数据的图像,而是共享您的数据帧示例
  • 共享代码,以便我们重现您的数据集并帮助您找到解决方案。
  • @AlexandreNixon 我已更改,谢谢您的建议
  • @MohitMotwani 老实说,我不知道从哪里开始编写代码,我知道我必须实现什么,但我需要代码方面的帮助

标签: python pandas


【解决方案1】:

要查找 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 2022-12-14
    • 1970-01-01
    • 2017-05-02
    • 2021-03-19
    相关资源
    最近更新 更多