[英]pandas: How to merge multiple dataframes with same column names on one column?
[英]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.