根据一列中所有值的组合来熊猫新数据框

背景

我已经收集了一段时间的公交车位置数据,并希望构建一个模型来预测公交车何时到达特定站点。

以最简单的形式,我有一个像这样的DataFrame:

import pandas as pd

df = pd.DataFrame({'station': ['Station 1', 'Station 2', 'Station 3', 'Station 4'], 
                    'arrival_time': ['10:00', '10:02', '10:03', '10:05']})
print(df)

     station arrival_time
0  Station 1        10:00
1  Station 2        10:02
2  Station 3        10:03
3  Station 4        10:05

我想将每个站点的到达时间映射到行程中稍后某个站点的到达时间。预期的输出如下所示:

  station_prev arrival_time_prev station_next arrival_time_next
0    Station 1             10:00    Station 2             10:02
1    Station 2             10:02    Station 3             10:03
2    Station 3             10:03    Station 4             10:05
3    Station 1             10:00    Station 3             10:03
4    Station 2             10:02    Station 4             10:05
5    Station 1             10:00    Station 4             10:05

我已经对df.shift()和以下用于单数DataFrame的作品进行了实验。

import pandas as pd
import numpy as np

def combos(df):
    
    columns_prev = np.array(df.columns) + '_prev'
    columns_next = np.array(df.columns) + '_next'
 
    df_combo = pd.DataFrame()
    
    for i in range(1, df.shape[0]):
        df_prev = df.shift(i)
        df_prev.columns = columns_prev
        df_next = df.copy()
        df_next.columns = columns_next
        combo = pd.concat([df_prev, df_next], axis=1).dropna()
        df_combo = df_combo.append(combo, ignore_index=True)
    
    return df_combo

但是,对于较大的DataFrames来说,速度相当慢,并且在我尝试将其包装到一个较大的函数中时会定期中断,该函数会汇总来自多次行程的数据(我经常遇到关键错误,但不明白为什么)。关于如何更优雅,有效和可靠地执行此操作的任何想法?在此先多谢!

cs95

将“站”转换为有序的分类列:

df['station'] = pd.Categorical(df['station'], ordered=True).codes  

您现在可以进行交叉联接和过滤:

tmp = df.assign(key=1)
(tmp.merge(tmp, on='key', suffixes=('_prev', '_next'))
    .drop('key', 1)
    .query('station_prev < station_next'))

    station_prev arrival_time_prev  station_next arrival_time_next
1              0             10:00             1             10:02
2              0             10:00             2             10:03
3              0             10:00             3             10:05
6              1             10:02             2             10:03
7              1             10:02             3             10:05
11             2             10:03             3             10:05

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据数据框中另一列的唯一值查找一列的所有组合

来自分类Dev

数据框中所有可能的列组合取决于另一列中的值

来自分类Dev

根据另一列中的相同值组合熊猫数据框列中的文本值

来自分类Dev

删除熊猫数据框中所有元素的最佳方法是什么?其中一列中的值在另一列中存在多次。

来自分类Dev

我有一个数据框,并想用另一列中的相同值来填充前几行中所有空列的值?

来自分类Dev

如何将一列中所有值的数据框转换为多列中的数据框?

来自分类Dev

数据框中所有列的唯一值计数

来自分类Dev

根据熊猫中另一列上的值在数据框中创建一个新列

来自分类Dev

Python Pandas:如何将数据框中一列中所有字典的值求和?

来自分类Dev

R:通过查找同一列中具有条件的数据框中所有大于或小于另一个给定数字的数字来创建新列

来自分类Dev

如何评估熊猫数据框中一行的所有值并写入新列

来自分类Dev

根据另一列具有输入数据框的值替换一列的值

来自分类Dev

根据另一列具有输入数据框的值替换一列的值

来自分类Dev

如何根据没有循环的另一列替换列(数据框)中组的所有相同值?

来自分类Dev

获取数据框中所有列的均值并创建一个新的数据框

来自分类Dev

熊猫数据框中所有值的随机对

来自分类Dev

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

来自分类Dev

使用字典参考另一列值来映射熊猫数据框的一列中的缺失值

来自分类常见问题

熊猫如何检查数据框中所有列的dtype?

来自分类Dev

不计算熊猫数据框中所有列的总和

来自分类Dev

如何截断熊猫数据框中所有列的开头?

来自分类Dev

不计算熊猫数据框中所有列的总和

来自分类Dev

根据一列中的条件创建一个新的熊猫列,并从同一数据框中的多列中分配值

来自分类Dev

根据另一列中的值将值添加到熊猫数据框的一列中

来自分类Dev

根据另一列中的值将值添加到熊猫数据框的一列中

来自分类Dev

“是否有 Pandas 函数可以根据数据框另一列的某些值添加新列?”

来自分类Dev

如何根据列对R中所有列的总和的贡献来删除数据框中的列

来自分类Dev

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

来自分类Dev

有没有一种最佳方法来获取分组的熊猫数据框中的所有值组合?

Related 相关文章

  1. 1

    根据数据框中另一列的唯一值查找一列的所有组合

  2. 2

    数据框中所有可能的列组合取决于另一列中的值

  3. 3

    根据另一列中的相同值组合熊猫数据框列中的文本值

  4. 4

    删除熊猫数据框中所有元素的最佳方法是什么?其中一列中的值在另一列中存在多次。

  5. 5

    我有一个数据框,并想用另一列中的相同值来填充前几行中所有空列的值?

  6. 6

    如何将一列中所有值的数据框转换为多列中的数据框?

  7. 7

    数据框中所有列的唯一值计数

  8. 8

    根据熊猫中另一列上的值在数据框中创建一个新列

  9. 9

    Python Pandas:如何将数据框中一列中所有字典的值求和?

  10. 10

    R:通过查找同一列中具有条件的数据框中所有大于或小于另一个给定数字的数字来创建新列

  11. 11

    如何评估熊猫数据框中一行的所有值并写入新列

  12. 12

    根据另一列具有输入数据框的值替换一列的值

  13. 13

    根据另一列具有输入数据框的值替换一列的值

  14. 14

    如何根据没有循环的另一列替换列(数据框)中组的所有相同值?

  15. 15

    获取数据框中所有列的均值并创建一个新的数据框

  16. 16

    熊猫数据框中所有值的随机对

  17. 17

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

  18. 18

    使用字典参考另一列值来映射熊猫数据框的一列中的缺失值

  19. 19

    熊猫如何检查数据框中所有列的dtype?

  20. 20

    不计算熊猫数据框中所有列的总和

  21. 21

    如何截断熊猫数据框中所有列的开头?

  22. 22

    不计算熊猫数据框中所有列的总和

  23. 23

    根据一列中的条件创建一个新的熊猫列,并从同一数据框中的多列中分配值

  24. 24

    根据另一列中的值将值添加到熊猫数据框的一列中

  25. 25

    根据另一列中的值将值添加到熊猫数据框的一列中

  26. 26

    “是否有 Pandas 函数可以根据数据框另一列的某些值添加新列?”

  27. 27

    如何根据列对R中所有列的总和的贡献来删除数据框中的列

  28. 28

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

  29. 29

    有没有一种最佳方法来获取分组的熊猫数据框中的所有值组合?

热门标签

归档