我有以下数据框。
tripid timepointid actualarrivaltime date time temp
0 4292837 I 299.083333 2014-04-01 04:59:04 NaN
1 4292837 H 316.666667 2014-04-01 05:16:40 NaN
2 4292837 G 320.466667 2014-04-01 05:20:28 NaN
3 4292837 F 323.066667 2014-04-01 05:23:04 NaN
4 4292839 I 376.783333 2014-04-01 06:16:46 NaN
5 4292839 H 386.100000 2014-04-01 06:26:06 NaN
6 4292839 G 389.116667 2014-04-01 06:29:07 NaN
7 4292839 F 394.466667 2014-04-01 06:34:28 NaN
我无法正确排序数据帧。我需要按时间排序,然后在每次旅行的时间点到达时间。出现此问题是因为tripid值不遵循任何模式。
我为每次旅行创建了一个临时列,以填充时间点I的时间,以便可以正确排序数据帧。但是,我对python相当新,并且不知道从哪里开始索引特定的列和行来填充另一列的每4行。以下是我想要创建的内容。
tripid timepointid actualarrivaltime date time temp
0 0 I 299.083333 2014-04-01 04:59:04 04:59:04
1 0 H 316.666667 2014-04-01 05:16:40 04:59:04
2 0 G 320.466667 2014-04-01 05:20:28 04:59:04
3 0 F 323.066667 2014-04-01 05:23:04 04:59:04
4 1 I 376.783333 2014-04-01 06:16:46 06:16:46
5 1 H 386.100000 2014-04-01 06:26:06 06:16:46
6 1 G 389.116667 2014-04-01 06:29:07 06:16:46
7 1 F 394.466667 2014-04-01 06:34:28 06:16:46
此外,一旦正确分类,我想重新订购三脚架,以便将来可以轻松分类。任何人都可以提供有关如何进行的信息吗?提前感谢您的帮助。
答案 0 :(得分:0)
i_time = df[['tripid', 'actualarrivaltime']][df['timepointid'] == 'I'].set_index('tripid')
i_time
actualarrivaltime
tripid
4292837 299.083333
4292839 376.783333
df.join(i_time, on=('tripid'), rsuffix='I')
tripid timepointid actualarrivaltime date time temp actualarrivaltimeI
0 4292837 I 299.083333 2014-04-01 04:59:04 NaN 299.083333
1 4292837 H 316.666667 2014-04-01 05:16:40 NaN 299.083333
2 4292837 G 320.466667 2014-04-01 05:20:28 NaN 299.083333
3 4292837 F 323.066667 2014-04-01 05:23:04 NaN 299.083333
4 4292839 I 376.783333 2014-04-01 06:16:46 NaN 376.783333
5 4292839 H 386.100000 2014-04-01 06:26:06 NaN 376.783333
6 4292839 G 389.116667 2014-04-01 06:29:07 NaN 376.783333
7 4292839 F 394.466667 2014-04-01 06:34:28 NaN 376.783333