首页 > 解决方案 > 熊猫组并加入

问题描述

我是熊猫新手。我想分析以下案例。比方说,水果市场每天从 18:00 到 22:00 给出水果的价格。他们每半小时更新一次时间实验室之间的水果价格。考虑市场在 18:00 给出的水果价格如下:

Fruit    Price
Apple     10
Banana    20

18:30半小时后,名单更新如下,

Fruit    Price
Apple     10
Banana    21
Orange    30
Grapes    25
Pineapple 65

我想查看最近[18:30] 的水果价格是否与之前[18:00] 的水果价格发生了变化。在这里,我想得到结果,

Fruit   18:00   18:30
Banana    20     21

为了解决这个问题,我正在考虑执行以下操作,

1) Add time column in the two data frames.
2) Merge the tables into one.
3) Make a Pivot table with Index Fruit name and Column as ['Time','Price']. 

我不知道如何让按时间分组的两个数据框相交。如何获取两个数据框的公共行。

标签: pythonpandas

解决方案


在这种情况下,您不需要旋转,我们可以简单地使用merge和使用suffixes参数来获得所需的结果:

df_update = pd.merge(df, df2, on='Fruit', how='outer', suffixes=['_1800h', '_1830h'])

    Fruit       Price_1800h Price_1830h
0   Apple       10.0        10.0
1   Banana      20.0        21.0
2   Orange      NaN         30.0
3   Grapes      NaN         25.0
4   Pineapple   NaN         65.0

编辑

我们为什么要使用outer论点?我们希望将所有更新的新数据保留在df2. 如果我们使用inner例如,我们将不会得到更新的水果,如下所示。除非这是 OP 所需的输出,在这种情况下尚不清楚。

df_update = pd.merge(df, df2, on='Fruit', how='inner', suffixes=['_1800h', '_1830h'])

    Fruit   Price_1800h Price_1830h
0   Apple   10          10.0
1   Banana  20          21.0

推荐阅读