为丢失的时间戳求和数据帧行



我想知道,当不同的数据帧行由于缺少时间戳而具有不同的行数时,是否有方法计算它们的总和。我有以下例子:

import pandas as pd
data1 = {'produced':  [19.7, 39.1, 86.4, 167.1]}
data2 = {'produced':  [22.4, 95, 144.3, 300.2]}
data3 = {'produced':  [15.1, 44.1, 80, 302.5]}
df1 = pd.DataFrame(data1, index = ['01/06/2021 09:35', '01/06/2021 09:40', '01/06/2021 09:45', '01/06/2021 09:50'])
df2 = pd.DataFrame(data2, index = ['01/06/2021 09:35', '01/06/2021 09:45', '01/06/2021 09:50', '01/06/2021 09:55'])
df3 = pd.DataFrame(data3, index = ['01/06/2021 09:35', '01/06/2021 09:40', '01/06/2021 09:45', '01/06/2021 09:55'])

正如你所看到的,我有一些具有不同行号的dfs,因为有几个";空白";价值观我想做的是计算每5分钟一行的总和。间隔,然后跳过空格。如果我按原样对行进行求和,我将错误地对不同的时间戳进行求和。

此外,是否可以将丢失的时间戳存储在数组或类似的东西中?提前谢谢!

concat然后sum:

pd.concat([df1,df2,df3]).sum(level=0)
# pd.concat([df1,df2,df3]).groupby(level=0).sum()

输出:

produced
01/06/2021 09:35      57.2
01/06/2021 09:40      83.2
01/06/2021 09:45     261.4
01/06/2021 09:50     311.4
01/06/2021 09:55     602.7

您还可以合并索引上的数据帧,并跨行求和。这样,您可以看到缺少值的数据帧。

df_total = df1.add_suffix("_df1")
for i, df in enumerate([df2, df3], start=2):
df = df.add_suffix("_df{}".format(i))
df_total = df_total.merge(df, right_index=True, left_index=True, how="outer")
df_total["sum"] = df_total.sum(axis=1)
print(df_total)

输出:

produced_df1  produced_df2  produced_df3    sum
01/06/2021 09:35          19.7          22.4          15.1   57.2
01/06/2021 09:40          39.1           NaN          44.1   83.2
01/06/2021 09:45          86.4          95.0          80.0  261.4
01/06/2021 09:50         167.1         144.3           NaN  311.4
01/06/2021 09:55           NaN         300.2         302.5  602.7

最新更新