亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何替換 pandas 多索引列集中的值

如何替換 pandas 多索引列集中的值

森林海 2023-05-16 15:09:17
鑒于以下情況:dd = {}for i in range(3):    for j in range(3):        key = (f"col_{i}", j)        dd[key] = {1: 2, 3: 4}print(pd.DataFrame.from_dict(dd))看起來像:  col_0       col_1       col_2            0  1  2     0  1  2     0  1  21     2  2  2     2  2  2     2  2  23     4  4  4     4  4  4     4  4  4我想使用以下替換:reps = {    "col_0": {0: "o", 1: "one", 2: "two"},    "col_1": {0: "o2", 1: "one2", 2: "two2"},    "col_2": {0: "o3", 1: "one3", 2: "two3"},}因此col_0, col_1,col_2不變,但第二層 分別0,1,2更改為o, one, two, o2, one2, two2, 和o3, one, two3 ,給出類似的內容:  col_0             col_1            col_2            o  one  two   o2 one2 two2     o3  one3  two31     2  2    2      2  2    2        2    2     23     4  4    4      4  4    4        4    4     4
查看完整描述

1 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

您可以使用列名創建元組,然后將匹配字典與第二個參數一起用作get默認值,因此如果不匹配則不替換:


L = [(a, reps[a].get(b, b)) if a in reps else (a, b) for a, b in df.columns.tolist()]

df.columns = pd.MultiIndex.from_tuples(L)

print (df)

  col_0         col_1           col_2          

      o one two    o2 one2 two2    o3 one3 two3

1     2   2   2     2    2    2     2    2    2

3     4   4   4     4    4    4     4    4    4

測試字典中是否沒有匹配的外鍵reps:


reps = {

    "col_100": {0: "o", 1: "one", 2: "two"},

    "col_1": {0: "o2", 1: "one2", 2: "two2"},

    "col_2": {0: "o3", 1: "one3", 2: "two3"},

}


L = [(a, reps[a].get(b, b)) if a in reps else (a, b) for a, b in df.columns.tolist()]

df.columns = pd.MultiIndex.from_tuples(L)

print (df)

  col_0       col_1           col_2          

      0  1  2    o2 one2 two2    o3 one3 two3

1     2  2  2     2    2    2     2    2    2

3     4  4  4     4    4    4     4    4    4

測試是否沒有匹配的內部鍵:


reps = {

    "col_0": {100: "o", 1: "one", 20: "two"},

    "col_1": {0: "o2", 1: "one2", 2: "two2"},

    "col_2": {0: "o3", 1: "one3", 2: "two3"},

}


L = [(a, reps[a].get(b, b)) if a in reps else (a, b) for a, b in df.columns.tolist()]

df.columns = pd.MultiIndex.from_tuples(L)

print (df)

  col_0        col_1           col_2          

      0 one  2    o2 one2 two2    o3 one3 two3

1     2   2  2     2    2    2     2    2    2

3     4   4  4     4    4    4     4    4    4


查看完整回答
反對 回復 2023-05-16
  • 1 回答
  • 0 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號