【发布时间】:2021-05-03 03:51:30
【问题描述】:
我有一个如下所示的数据框:
**date** **time** **price**
NaN 1103 5
NaN 0010 10
NaN 0100 6
NaN 0201 8
NaN 0015 7
12.03.2020 0400 4
NaN 0500 6
NaN 0800 3
NaN 1000 4
NaN 1140 5
12.03.2020 1200 2
NaN 0030 1
NaN 0112 0
我想通过时间字段计算日期来填充日期列中的 NaN 值。我的想法是在日期列中找到第一个非空值。一旦有了,我想 bfill() 和 ffill() 以这样的方式在午夜前后的时间测量中更改日期。因此,在我们的示例中,在第一个非空单元格的 bfill() 之后,数据将如下所示:
**date** **time** **price**
10.03.2020 1103 5
11.03.2020 0010 10
11.03.2020 0100 6
11.03.2020 0201 8
12.03.2020 0015 7
12.03.2020 0400 4
NaN 0500 6
NaN 0800 3
NaN 1000 4
NaN 1140 5
12.03.2020 1200 2
NaN 0030 1
NaN 0112 0
这是 ffil() 从第一个非空日期值开始的样子:
**date** **time** **price**
10.03.2020 1103 5
11.03.2020 0010 10
11.03.2020 0100 6
11.03.2020 0201 8
12.03.2020 0015 7
12.03.2020 0400 4
12.03.2020 0500 6
12.03.2020 0800 3
12.03.2020 1000 4
12.03.2020 1140 5
12.03.2020 1200 2
13.03.2020 0030 1
13.03.2020 0112 0
值得注意的是,第一个非空值可以出现在日期列中的任何位置。将不胜感激解决这个问题的一些帮助。谢谢
date = [NaN,NaN,NaN,NaN,NaN,"12.03.2020", NaN,NaN,NaN,NaN, "12.03.2020", NaN, NaN}
time = [1103,0010,0100,0201,0015,0400,0500,0800,1000,1140,1200,0030,0112]
price= [5,10,6,8,7,4,6,3,4,5,2,1,0]
编辑:添加列表
【问题讨论】:
-
您能否以列表格式发布您的数据以便于重新创建?另外,你确定 bfill 和 ffill 是一致的,两天之间没有冲突或歧义吗?
-
我已经添加了列表,但是我不确定如何输入 NaN。是的 bfill() 和 ffill() 是一致的,只有在午夜之后才会改变日期。
-
我们如何知道与 12.03.2020 相关的时间是上午还是下午?如果他们是上午,为什么我们必须在下一行移动到 13.03?这些似乎没有很好的定义
-
时间采用 24 小时制。所以上午 12:00(午夜)到下午 12:00 是 24 小时格式的 0000 - 1200。
标签: python python-3.x pandas dataframe