簡體   English   中英

如何合並所有具有相同索引和相同列名的數據框列表?

[英]How to merge list of dataframes all with same index and same column names?

我有一個這樣的數據框列表,其中包含 90 個加熱設備

data_list = [df0,df2, ... ,df89]

data_list中的所有這些數據框都具有相同的功能(= 列名):

("timestamp", "outside_temperature", "heating_generation", "power_consumption", "hot_water_storage", etc..)

所有數據幀都有索引:同一時間段的timestamp

我現在想創建新的數據框,這些數據框具有一個功能,但適用於所有 90 個加熱設備

例如對於外部溫度:

  timestamp        device_0, device_2, device_3 ,..., device_89
01.05.2022 00:10      15.03    14.39     15.69   ...   15.30
01.05.2022 00:15      14.94    14.20     15.30   ...   15.29
01.05.2022 00:20      14.94    14.05     15.29   ...   15.20
.
.
.
etc.

這適用於我的所有功能。

知道最好的方法是什么嗎? 我正在考慮合並,但找不到好的建議,或者通過 for 循環來完成。

如果我正確地遵循了您的問題,您可以通過首先使用理解連接選定的列,然后分兩步設置列名稱。 這確實假設存儲在 data_list 中的所有數據幀中的時間戳都是相同的。

例如,以下將連接所有 outside_temperature 列,使列名相同:

feature_df = pd.concat([x['outside_temperture'] for x in data_list], axis=1)

然后您可以使用以下內容重命名列:

feature_df.columns = [f'device_{i}' for i in range(len(data_list))]

您可以連接您的數據幀,然后使用pd.pivot函數轉置它們,就像在這個小例子中一樣

import pandas as pd
df1 = pd.DataFrame({
    'timestamp': [pd.Timestamp(2022, 1,1), pd.Timestamp(2022, 1,2)],
    'value':[1,2],

})
df2 = pd.DataFrame({
    'timestamp': [pd.Timestamp(2022, 1,1), pd.Timestamp(2022, 1,4)],
    'value':[3,4]
})

dfs = [df1, df2]
# add df tag
for (idx, df) in enumerate(dfs):
    df['device'] = f'device_{idx}'

final_df = pd.concat([df1, df2])
pd.pivot(index = 'timestamp' , columns = 'device', values= 'value', data= final_df )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM