python-3.x - 为数据框中的每个类别创建日期时间范围:python/SQL
问题描述
我有一个包含列的数据框:ID、技术、价格和因素(见下文)。我想将此日期时间范围分配给此数据框中的每个“ID”。因此,我根据我的要求创建了另一个日期时间数据框。我一直致力于基于“pandas.merge”函数合并数据帧,该函数需要数据帧之间的公共键。我的日期时间数据框不包含任何与父数据框通用的变量来执行数据框之间的合并操作。如何解决这个问题?
df:
ID Tech Price Factor
100-10A A 688.3 0.36
100-10B A 123 0.36
200-11A A 543 0.34
450-11B A 688.3 0.34
570-1 B 675 0.31
430-2 B 952 0.28
698-5A C 52.8 0
129-1 D 177.6 0.08
我创建了一个每小时变化的日期时间数据框(次)。次:
import pandas as pd
a = pd.date_range(start='2010-01-01 00:00:00', end='2010-01-01 6:00:00', freq = 'H')
pd.DataFrame(a):
a:
0
0 2010-01-01 00:00:00
1 2010-01-01 01:00:00
2 2010-01-01 02:00:00
3 2010-01-01 03:00:00
4 2010-01-01 04:00:00
5 2010-01-01 05:00:00
6 2010-01-01 06:00:00
在这种情况下,如何实现日期到数据框的映射?我希望我的数据框如下所示
Datetime ID Tech Price Factor
1/1/2010 0:00 100-10A A 688.3 0.36
1/1/2010 1:00 100-10A A 688.3 0.36
1/1/2010 2:00 100-10A A 688.3 0.36
1/1/2010 3:00 100-10A A 688.3 0.36
1/1/2010 4:00 100-10A A 688.3 0.36
1/1/2010 5:00 100-10A A 688.3 0.36
1/1/2010 6:00 100-10A A 688.3 0.36
1/1/2010 0:00 100-10B A 123 0.36
1/1/2010 1:00 100-10B A 123 0.36
1/1/2010 2:00 100-10B A 123 0.36
1/1/2010 3:00 100-10B A 123 0.36
1/1/2010 4:00 100-10B A 123 0.36
1/1/2010 5:00 100-10B A 123 0.36
1/1/2010 6:00 100-10B A 123 0.36
1/1/2010 0:00 200-11A A 543 0.34
1/1/2010 1:00 200-11A A 543 0.34
1/1/2010 2:00 200-11A A 543 0.34
1/1/2010 3:00 200-11A A 543 0.34
1/1/2010 4:00 200-11A A 543 0.34
1/1/2010 5:00 200-11A A 543 0.34
1/1/2010 6:00 200-11A A 543 0.34
1/1/2010 0:00 450-11B A 688.3 0.34
1/1/2010 1:00 450-11B A 688.3 0.34
1/1/2010 2:00 450-11B A 688.3 0.34
1/1/2010 3:00 450-11B A 688.3 0.34
1/1/2010 4:00 450-11B A 688.3 0.34
1/1/2010 5:00 450-11B A 688.3 0.34
1/1/2010 6:00 450-11B A 688.3 0.34
1/1/2010 0:00 570-1 B 675 0.31
1/1/2010 1:00 570-2 B 675 0.31
1/1/2010 2:00 570-3 B 675 0.31
1/1/2010 3:00 570-4 B 675 0.31
1/1/2010 4:00 570-5 B 675 0.31
1/1/2010 5:00 570-6 B 675 0.31
1/1/2010 6:00 570-7 B 675 0.31
解决方案
找到了我的问题的解决方案。这可以通过交叉连接来实现。由于没有匹配的键,我们暂时为 dfs/ 表中的每个表分配一个键,并在两者之间执行合并以执行交叉连接:
def cartesian_product_basic(left, right):
return (left.assign(key=1).merge(right.assign(key=1), on='key').drop('key', 1))
result = cartesian_product_basic(df, a)
推荐阅读
- azure - MSAL idToken 没有 upn、配置文件或电子邮件数据?在 idToken 中需要它来进行护照天蓝色广告授权
- mysql - 查询以将行值汇总为特定的最大值
- html - PHP:字符集问题
- rest - 在 ionic serve 上工作的 Http 请求,但在“ionic cordova run android --device”上不起作用
- android - 在 Android 中对 Log-function 的所有调用中混淆或删除字符串文字
- python - 在numpy中将带坐标的一维数组转换为二维数组
- opengl - 加载和使用 Alpha 通道位图
- java - java.lang.NoClassDefFoundError:解析失败:Lcom/google/firebase/FirebaseApp$IdTokenListener;
- keras - 用于 2d 图像旋转估计的 CNN(角度回归)
- angular - 并行运行 Angular i18 构建