簡體   English   中英

Pandas Dataframe 用多個索引重塑

[英]Pandas Dataframe Reshape with Multiple Index

努力了解 Pandas 中的重塑功能。 到目前為止,我可以使用簡單的結構對 dataframe 進行重塑,例如

d = {'id1': [1,1,1,2,2,2], 'id2': [1,1,1,1,1,1], 'value': [1,2,3,4,5,6], 'type':['A','B','C','A','B','C']}
tab = pd.DataFrame(data=d)      
tab.pivot(index = 'id1', columns = "type", values = "value") 

但是,在看起來更像這樣的情況下,我在理解多索引模式時遇到了一些挑戰。 從概念上講,在這種情況下我想要返回的是一個具有 3 行的新 df。 索引都是id1id2 ,因此第 1 行將是id1=1id2=1的唯一組合的值,然后第 2 行將是id1=1id2=2 ,最后第 3 行將是id1=2id2=1

d = {'id1': [1,1,1,1,1,1,2,2,2], 'id2': [1,1,1,2,2,2,1,1,1], 'value': [1,2,3,4,5,6,7,8,9], 'type':['A','B','C','A','B','C','A','B','C']}
tab = pd.DataFrame(data=d)      
tab.pivot(index = 'id1', columns = "type", values = "value")

似乎更簡單的選擇是在 pandas 中使用pivot_table function:

d = {'id1': [1,1,1,1,1,1,2,2,2], 'id2': [1,1,1,2,2,2,1,1,1], 'value': [1,2,3,4,5,6,7,8,9], 'type':['A','B','C','A','B','C','A','B','C']}
tab4 = pd.DataFrame(data=d)
tab4.pivot_table(
        values='value', 
        index=['id1', 'id2'], 
        columns='type')

產生以下內容,我相信這就是您所追求的:

type     A  B  C
id1 id2         
1   1    1  2  3
    2    4  5  6
2   1    7  8  9

這是通過這個問題較早的帖子發現的。

注意:這是我對 SO 的第一個回答,所以如果我應該做些不同的事情,請告訴我!

暫無
暫無

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

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