python - 熊猫组并加入
问题描述
我是熊猫新手。我想分析以下案例。比方说,水果市场每天从 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'].
我不知道如何让按时间分组的两个数据框相交。如何获取两个数据框的公共行。
解决方案
在这种情况下,您不需要旋转,我们可以简单地使用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
推荐阅读
- azure - 我们如何在 Azure 发布管道或测试计划中发布 HTML 报告(在代理机器上生成)?
- python - 寻找有关如何切出矩阵的一部分并在另一个矩阵中种植的想法
- mongodb - 在mongodb中更新,当Upsert为true时,如何指定字段的顺序?
- jsp - 如何将 1 个文本框值发送到 1 个以上的 servlet
- android - 带有 CardView 的 AndroidX GridView 无法通过自定义背景绘制完美查看
- javascript - 如何从以下xml制作层次结构数组?
- javascript - Angular JS Base Href 第二次加载页面不起作用
- python - Pandas 在列中设置的值等于 5% 分位数,如果它们小于该分位数
- python-3.x - 根据 pct_change 和 Pandas 中的先前值计算组的多个当前值
- javascript - 如何在调整大小时保持浏览器窗口的纵横比?