如何从单独列的特定行填充列值 - python

时间:2016-01-29 18:13:14

标签: python sorting pandas append

我有以下数据框。

    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

此外,一旦正确分类,我想重新订购三脚架,以便将来可以轻松分类。任何人都可以提供有关如何进行的信息吗?提前感谢您的帮助。

1 个答案:

答案 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