[英]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。 索引都是id1
和id2
,因此第 1 行將是id1=1
和id2=1
的唯一組合的值,然后第 2 行將是id1=1
和id2=2
,最后第 3 行將是id1=2
和id2=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.