使用Python使用多个数据帧和日期时间条件计算总概率

使用Python使用多个数据帧和日期时间条件计算总概率,python,pandas,dataframe,datetime,Python,Pandas,Dataframe,Datetime,使用下面的代码,我创建了概率字典(第二个代码块)。下面的示例代码仅适用于小时 # Turn into datetime and format the Timestamp according to the probability type h3_P_Ho["Timestamp"] = pd.to_datetime(h3_P_Ho["Timestamp"]).dt.strftime("%H%M").astype(int) # Create

使用下面的代码,我创建了概率字典(第二个代码块)。下面的示例代码仅适用于小时

# Turn into datetime and format the Timestamp according to the probability type
h3_P_Ho["Timestamp"] = pd.to_datetime(h3_P_Ho["Timestamp"]).dt.strftime("%H%M").astype(int)

# Create an array
h3_PR_Ho_Ar = np.array(h3_PR_Ho["Timestamp"])

# Get probability for hours
unique, counts = np.unique(h3_PR_Ho_Ar, return_counts=True)
h3_PR_Ho_Di = dict(zip(unique, counts))

h3_PR_Ho_To = sum(h3_PR_Ho_Di.values(), 0)
h3_PR_Ho_Pr = {k:v / total for k, v in h3_PR_Ho_Di.items()}
这给了我一个设备在“x”小时内打开的概率(30等于00:30等):

此外,我还获得了工作日、月日、年周和月的概率

h3_Pr_We_Pr = {1: 0.07920792079207921, 2: 0.0594059405940594, ... ,6: 0.1353135313531353}
h3_Pr_Dm_Pr = {1: 0.07590759075907591, 3: 0.11551155115511551, ... ,30: 0.036303630363036306}
h3_Pr_Wy_Pr = {8: 0.132013201320132, 9: 0.15841584158415842, ... ,13: 0.1353135313531353}
h3_Pr_Mo_Pr = {2: 0.07590759075907591, 3: 0.801980198019802, 4: 0.1353135313531353}
现在我想创建一个新的数据框,在这里我根据特定时间计算总概率。为此,我首先使用下面的代码将datetime转换为与概率字典相同的顺序

h3_Pr["Timestamp"] = pd.to_datetime(h3_Pr["Timestamp"]).dt.strftime("%H%M%w%-d%W%-m").astype(int)
这意味着2013-02-27 00:15:00变为15327082。我想知道的是,给定这个输出,计算给定日期的总概率。下面是一个关于我如何手动操作的示例

15 = 0.013
3 = 0.244
27 = 0.092
08 = 0.066
2 = 0.0759
因此,2013-02-27 00:15:00的总概率等于0.00000146

我想自动这样做,所以我创建了下面的空数据帧(h3_Pr)。KE应根据时间戳列中的值填入概率

Timestamp            KE
0       327082      
1       15327082     0.00000146
2       30327082    
3       45327082    
4       100327082   
...
3449    2215303134
3450    2230303134
3451    2245303134
3452    2300303134
3453    2315303134
你知道如何自动计算总概率,而不是像我在示例中那样手动计算吗

Timestamp            KE
0       327082      
1       15327082     0.00000146
2       30327082    
3       45327082    
4       100327082   
...
3449    2215303134
3450    2230303134
3451    2245303134
3452    2300303134
3453    2315303134