我有兩個相同索引的 DataFrame,但每個都代表我的完整資料集的不同方面。
例如:
import pandas as pd
from datetime import date
df_price = pd.DataFrame(
index=pd.date_range(start=date(2021, 1, 1), end=date(2021, 1, 3), freq="D"),
columns=["A", "B", "C"],
data={"A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9]}
)
df_quantity = pd.DataFrame(
index=pd.date_range(start=date(2021, 1, 1), end=date(2021, 1, 3), freq="D"),
columns=["A", "B", "C"],
data={"A": [9, 8, 7], "B": [6, 5, 4], "C": [3, 2, 1]}
)
我想要的是相當于這樣做:
index = pd.MultiIndex.from_product([["A", "B", "C"], ["price", "quantity"]], names=["first", "second"])
df_total = pd.DataFrame(
index=pd.date_range(start=date(2021, 1, 1), end=date(2021, 1, 3), freq="D"),
columns=index,
data=[[1, 9, 4, 6, 7, 3], [2, 8, 5, 5, 8, 2], [3, 7, 6, 4, 9, 1]]
)
first A B C
second price quantity price quantity price quantity
2021-01-01 1 9 4 6 7 3
2021-01-02 2 8 5 5 8 2
2021-01-03 3 7 6 4 9 1
有任何想法嗎?我已經嘗試過加入和合并的常用方法,但我所能做的就是添加帶有后綴的列。
uj5u.com熱心網友回復:
一種選擇:
(i)join兩個 DataFrame
(ii) 拆分列名'_',因為我們要使用from_tuples,所以將子串列映射到元組
(iii) 用于pd.MultiIndex將列轉換為 MultiIndex
(iv) 對列名進行排序以匹配所需的結果
df_total = df_price.join(df_quantity, lsuffix='_price', rsuffix='_quantity')
df_total.columns = pd.MultiIndex.from_tuples(map(tuple, df_total.columns.str.split('_')))
df_total = df_total.reindex(df_total.columns.sort_values(), axis=1)
輸出:
A B C
price quantity price quantity price quantity
2021-01-01 1 9 4 6 7 3
2021-01-02 2 8 5 5 8 2
2021-01-03 3 7 6 4 9 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/414789.html
標籤:
