的水平綜上所述考慮dataframes d1
和d2
爲什麼不GROUPBY上正確指數
d1 = pd.DataFrame(dict(
A=list('111222'),
B=list('xyzxyz'),
C=range(6)
))
d2 = pd.DataFrame(dict(
A=list('111222'),
B=list('xyzxyz'),
C=range(6)
))
我想然而這些串聯並執行groupby
df = pd.concat([d.set_index('A') for d in [d1, d2]], keys=['d1', 'd2'])
print(df)
B C
A
d1 1 x 0
1 y 1
1 z 2
2 x 3
2 y 4
2 z 5
d2 1 x 0
1 y 1
1 z 2
2 x 3
2 y 4
2 z 5
,當我做了groupby
和sum
df.groupby(level='A').C.sum()
A
1 0
1 2
1 4
2 6
2 8
2 10
Name: C, dtype: int64
這不是我所期待的。
我可以拆開df
並重新拼湊回來在一起,然後進行groupby
...
我預計
pd.DataFrame(
df.values,
pd.MultiIndex.from_tuples(df.index.values, names=df.index.names),
df.columns.values
).groupby(level='A').C.sum()
A
1 6
2 24
Name: C, dtype: int64
誰能解釋什麼錯誤?
我贊同你。我查看了索引,發現等級值是相同的並且重複。在「正常」形成的多指數中,各個級別不會重複,但標籤會是這樣。做得好! – piRSquared