9
問題
有一些類似於兩個問題,但它們不是同一個問題:here和here。他們都稱GroupBy
的方法,如count()
或aggregate()
,我知道這返回DataFrame
。我問的是如何將GroupBy
(pandas.core.groupby.DataFrameGroupBy
類)對象本身轉換爲DataFrame
。我會在下面說明。Python的大熊貓轉換的GroupBy對象到數據幀
構造一個例子DataFrame
如下。
data_list = []
for name in ["sasha", "asa"]:
for take in ["one", "two"]:
row = {"name": name, "take": take, "score": numpy.random.rand(), "ping": numpy.random.randint(10, 100)}
data_list.append(row)
data = pandas.DataFrame(data_list)
以上DataFrame
應該像以下(具有不同數量明顯)。
name ping score take
0 sasha 72 0.923263 one
1 sasha 14 0.724720 two
2 asa 76 0.774320 one
3 asa 71 0.128721 two
我想要做的是一羣以列「名稱」和「需要」(按順序),這樣我就可以得到一個DataFrame
從列「名」構建的多指標索引和「拿」,如下圖。
score ping
name take
sasha one 0.923263 72
two 0.724720 14
asa one 0.774320 76
two 0.128721 71
我該如何做到這一點?如果我做grouped = data.groupby(["name", "take"])
,那麼grouped
是一個pandas.core.groupby.DataFrameGroupBy
實例。如何將grouped
轉換爲DataFrame
實例?
哇,!!!! Riiiiiight !!!!!好的,當Stack Overflow允許我在9分鐘內接受這個答案。謝謝。 – Ray
當我嘗試使用這個答案時,我得到一個'AttributeError'。 「無法訪問'DataFrameGroupBy'對象的可調用屬性'set_index',嘗試使用'apply'方法」 – Nate
@Nate - 看起來'data'不是'DataFrame',而是groupby的輸出 - 所以需要'g = df.groupby ('col')'然後'g.apply(lambda x:x ['col1']。set_index())' – jezrael