【发布时间】:2019-03-14 14:29:30
【问题描述】:
我有以下数据框,所有空白区域都是 np.nan。
coupler_id 25 26 28 29
timestamp
2015-12-05 03:02:29 12017.0 12008.0
2015-12-05 03:04:47 12017.0 12008.0
2015-12-05 03:09:14 12017.0 12008.0
2015-12-05 03:12:12 12017.0 12008.0
2015-12-05 03:23:06 12008.0
2015-12-05 03:24:45 12017.0
2015-12-05 06:31:20 12017.0
2015-12-05 09:36:29 12011.0
2015-12-05 23:59:35 12017.0
2015-12-06 23:59:38 12017.0
我想转发填充缺失值(限制 1)不重复行中的值。所以上面的数据框应该是这样的:
coupler_id 25 26 28 29
timestamp
2015-12-05 03:02:29 12017.0 12008.0
2015-12-05 03:04:47 12017.0 12008.0
2015-12-05 03:09:14 12017.0 12008.0
2015-12-05 03:12:12 12017.0 12008.0
2015-12-05 03:23:06 12017.0 12008.0
2015-12-05 03:24:45 12017.0
2015-12-05 06:31:20 12017.0
2015-12-05 09:36:29 12011.0
2015-12-05 23:59:35 12011.0 12017.0
2015-12-06 23:59:38 12017.0
编辑:
如果第 25 列和第 26 列中有数据,并且第 28 列索引 2015-12-05 03:24:45 上没有前面的 nan,该怎么办。
coupler_id 25 26 28 29
timestamp
2015-12-05 03:02:29 12017.0 12008.0
2015-12-05 03:04:47 12017.0 12008.0
2015-12-05 03:09:14 12017.0 12008.0
2015-12-05 03:12:12 12017.0 12008.0
2015-12-05 03:23:06 12007.0 12018.0 12008.0
2015-12-05 03:24:45 12033.0 12050.0 12025.0 12017.0
2015-12-05 06:31:20 12033.0 12017.0
2015-12-05 09:36:29 12008.0 12011.0
2015-12-05 23:59:35 12017.0
2015-12-06 23:59:38 12017.0
【问题讨论】:
-
只需对 fillna 函数使用 limit 参数。 pandas.pydata.org/pandas-docs/stable/generated/…
-
这满足了限制 1 的要求,但会在索引 2015-12-05 06:31:20 的第 28 列和第 29 列中生成重复的 12017.0。
-
所以如果填充会生成 col28 = col29,则无法填充任何行?
-
@Yuca 是的,但此外,没有前向填充应该会产生 col28 = any(col25, col26, col29) 的情况。