根据另一列值向前填充熊猫

阿卡什巴楚

更新:我有一个大熊猫数据框,其中包含admitTime,dischargeTime,pat_name,pat_rec,它有大约500万条记录。我正在尝试根据其余列的dischargeTime datetime值来向前填充放电时间pat_name列,然后在此之后中断。

df:

admitTime dischargeTime pat_name pat_rec
2013-12-23 20:20:30 2013-12-23 21:12:00 Alex A4536
2013-12-23 21:00:30 2013-12-23 21:01:00 2013-12-23 21:01:30 2013-12-23 21:02:00 2013-12-23 21:02:30 2013-12-23 21:03:00 2013-12-23 21:03:30 2013-12-23 21:04:00 2013-12-23 21:04:30 2013-12-23 21:05:00 2013-12-23 21:05:30 2013-12-23 21:06:00 2013-12-23 21:06:30 2013-12-23 21:07:00 2013-12-23 21:07:30 2013-12-23 21:08:00 2013-12-23 21:08:30 2013-12-23 21:09:00 2013-12-23 21:09:30 2013-12-23 21:10:00 2013-12-23 21:10:30 2013-12-23 21:11:00 2013-12-23 21:11:30 2013-12-23 21:12:00 2013-12-23 21:12:30 2013-12-23 21:13:00 2013-12-23 21:13:30 2013-12-23 21:14:00 2013-12-21:18:00 Sam A4523 2013-12-23 21:14:30 2013-12-23 21:15:00 2013-12-23 21:15:30 2013-12-23 21:16:00 2013-12-23 21:16:30 2013-12-23 21:17:00 2013-12-23 21:17:30 2013-12-23 21:18:00 2013-12-23 21:18:30 2013-12-23 21:19:00 2013-12-23 21:19:30 2013-12-23 21:20:00

理想情况下,我希望我的df看起来像

datetime discchargeTime pat_name pat_rec
2013-12-23 20:20:30 2013-12-23 21:12:00 Alex A4536
2013-12-23 21:00:30 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:01:00 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:01:30 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:02:00 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:02:30 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:03:00 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:03:30 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:04:00 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:04:30 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:05:00 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:05:30 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:06:00 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:06:30 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:07:00 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:07:30 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:08:00 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:08:30 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:09:00 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:09:30 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:10:00 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:10:30 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:11:00 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:11:30 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:12:00 2013-12-23 21:12:00 Alex A4536 2013-12-23 21:12:30 2013-12-23 21:13:00 2013-12-23 21:13:30 2013-12-23 21:14:00 2013-12-21:18:00 Sam A4523 2013-12-23 21:14:30 2013-12-21:18:00 Sam A4523 2013-12-23 21:15:00 2013-12-21:18:00 Sam A4523 2013-12-23 21:15:30 2013-12-21:18:00 Sam A4523 2013-12-23 21:16:00 2013-12-21:18:00 Sam A4523 2013-12-23 21:16:30 2013-12-21:18:00 Sam A4523 2013-12-23 21:17:00 2013-12-21:18:00 Sam A4523 2013-12-23 21:17:30 2013-12-21:18:00 Sam A4523 2013-12-23 21:18:00 2013-12-21:18:00 Sam A4523 2013-12-23 21:18:30 2013-12-23 21:19:00 2013-12-23 21:19:30 2013-12-23 21:20:00

我曾尝试过,df[column_name].ffill()但后来意识到这样做不正确。

如果能得到任何建议,我将不胜感激。

ky

您可以使用以下代码:

mask = df['admitTime'] > df['dischargeTime'].iloc[0] #masking where admit time is greater than discharge time
pd.concat([df[~mask].ffill(),df[mask]]) #ffill the remaining and concat with mask

    admitTime           dischargeTime      pat_name pat_rec
0   2013-12-23 20:20:30 2013-12-23 21:12:00 Alex    A4536
1   2013-12-23 21:00:30 2013-12-23 21:12:00 Alex    A4536
2   2013-12-23 21:01:00 2013-12-23 21:12:00 Alex    A4536
3   2013-12-23 21:01:30 2013-12-23 21:12:00 Alex    A4536
4   2013-12-23 21:02:00 2013-12-23 21:12:00 Alex    A4536
5   2013-12-23 21:02:30 2013-12-23 21:12:00 Alex    A4536
6   2013-12-23 21:03:00 2013-12-23 21:12:00 Alex    A4536
7   2013-12-23 21:03:30 2013-12-23 21:12:00 Alex    A4536
8   2013-12-23 21:04:00 2013-12-23 21:12:00 Alex    A4536
9   2013-12-23 21:04:30 2013-12-23 21:12:00 Alex    A4536
10  2013-12-23 21:05:00 2013-12-23 21:12:00 Alex    A4536
11  2013-12-23 21:05:30 2013-12-23 21:12:00 Alex    A4536
12  2013-12-23 21:06:00 2013-12-23 21:12:00 Alex    A4536
13  2013-12-23 21:06:30 2013-12-23 21:12:00 Alex    A4536
14  2013-12-23 21:07:00 2013-12-23 21:12:00 Alex    A4536
15  2013-12-23 21:07:30 2013-12-23 21:12:00 Alex    A4536
16  2013-12-23 21:08:00 2013-12-23 21:12:00 Alex    A4536
17  2013-12-23 21:08:30 2013-12-23 21:12:00 Alex    A4536
18  2013-12-23 21:09:00 2013-12-23 21:12:00 Alex    A4536
19  2013-12-23 21:09:30 2013-12-23 21:12:00 Alex    A4536
20  2013-12-23 21:10:00 2013-12-23 21:12:00 Alex    A4536
21  2013-12-23 21:10:30 2013-12-23 21:12:00 Alex    A4536
22  2013-12-23 21:11:00 2013-12-23 21:12:00 Alex    A4536
23  2013-12-23 21:11:30 2013-12-23 21:12:00 Alex    A4536
24  2013-12-23 21:12:00 2013-12-23 21:12:00 Alex    A4536
25  2013-12-23 21:12:30 NaT                 NaN     NaN
26  2013-12-23 21:13:00 NaT                 NaN     NaN
................
................

然后,您可以根据需要用空格替换nan。希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据条件填充另一列(熊猫)的空值

如何根据同一行另一列中的值来向前填充列值

根据熊猫数据框中另一列的最后一个值填充列

根据另一列填充熊猫列

如何根据熊猫中另一列中的空值填充列

如何根据另一列中的间隔填充熊猫中其他列的缺失值?

Python熊猫根据另一列的条件填充缺失值(NaN)

根据另一列中的条件填充熊猫

在另一列中的特定值之后按组向前填充列的值

熊猫根据另一列中的值替换值

熊猫,根据另一列的值减去值

如何根据另一列中的值填充列?

根据另一列的值填充CSV列

熊猫根据另一列的值移动列数据

根据另一列熊猫的值添加新列

如何根据另一列中的值填充另一列中的值?

Python函数根据另一列填充nan值

在熊猫中,如何从一列中的唯一值中创建列,然后根据另一列中的值填充它?

在熊猫数据框中按另一列分组后如何插入缺失的日期并向前填充列

熊猫:根据另一列的值打印一列的值

根据两列的匹配,改变一列并从另一列填充其值

通过排除熊猫另一列中的特定值来填充一列

在熊猫中填充另一列中某一列的缺失值

用另一列的条件填充一列并移动熊猫中的值

如何调节一列的循环以填充熊猫数据框中的另一列值

Excel公式根据另一列中的值填充一列

根据另一列的值填充一列 (SQL)

根据另一列的汇总在一列中填充空值

根据另一列中的值填充一列-Pandas