我正在尋找可以幫助我解決以下任務的資料結構/演算法:
- 假設我們有兩條業務線 B1 和 B2
- 每個業務線有3個產品P1、P2、P3
- 每個產品都有相同的引數命名法,我的程式最終將計算:H、W、L
回答評論:H、W、L 的值確實是數字。
進一步澄清:所有 B、P 和 H、W、L 都是字串,但 H、W、L 的值(我沒有在樹上顯示它們)是數字并且都是不同的。
在第一次運行時,我正在考慮構建這樣的樹:

然后,我想在 P1 上執行分析,所以我需要能夠輕松地從 P1 節點檢索資料,跨樹如下:

隨后,對 H 的分析將需要檢索如下資料:

(為了獲得靈感,這在 Excel 資料透視表中很容易實作,只需重新排列列)
我的語言是 Python,到目前為止,我只提出了嵌套字典(盡管搜索嵌套鍵非常繁瑣),或者以 B1、B2 作為鍵的字典,假設 (P1, H, value_of_H) 作為元組,我可以如果 P 或 H/W/L 在元組中,請查看每個鍵。
uj5u.com熱心網友回復:
您可以創建一個具有多個索引級別的 Pandas DataFrame,并使用以下命令進行查詢xs:
import pandas as pd
import numpy as np
firms = ["B1", "B2"]
products = ["P1", "P2", "P3"]
params = ["H", "W", "L"]
df = pd.DataFrame(
index=pd.MultiIndex.from_product([firms, products, params]),
data=np.random.randint(1, 10, 2 * 3 * 3),
columns=["Value"]
)
# analytics on P1:
print(df.xs("P1", level=1))
# Value
# B1 H 5
# W 6
# L 9
# B2 H 1
# W 5
# L 7
# analytics on H:
print(df.xs("H", level=2))
# Value
# B1 P1 7
# P2 2
# P3 6
# B2 P1 5
# P2 6
# P3 6
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/415944.html
標籤:
下一篇:如果飛鏢中有[1::]?
