我想知道當由于缺少時間戳而具有不同的行數時,是否有一種方法可以計算不同資料幀行的總和。我有以下示例:
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 分鐘計算一次總和。間隔并簡單地跳過空白。如果我按原樣對行求和,我將錯誤地求和不同的時間戳。
另外,是否可以將丟失的時間戳存盤在陣列或類似的東西中?先感謝您!
uj5u.com熱心網友回復:
連接然后求和:
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
uj5u.com熱心網友回復:
您還可以合并索引上的資料幀并跨行求和。這樣,您就可以看到缺少值的資料框。
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/371466.html
上一篇:當時間戳不正確時,在python中獲取給定時間范圍的資料
下一篇:對分組資料使用isin()函式
