我有一個數據幀:「ValueError異常:值的長度不符合指標的長度」試圖修改列值時,一個大熊貓GROUPBY
A C D
0 one 0.410599 -0.205158
1 one 0.144044 0.313068
2 one 0.333674 -0.742165
3 three 0.761038 -2.552990
4 three 1.494079 2.269755
5 two 1.454274 -0.854096
6 two 0.121675 0.653619
7 two 0.443863 0.864436
讓我們假設A
是錨柱。我現在要顯示的每個組值只有一次,在頂部:
A C D
0 one 0.410599 -0.205158
1 0.144044 0.313068
2 0.333674 -0.742165
3 three 0.761038 -2.552990
4 1.494079 2.269755
5 two 1.454274 -0.854096
6 0.121675 0.653619
7 0.443863 0.864436
這就是我想出:
df['A'] = df.groupby('A', as_index=False)['A']\
.apply(lambda x: x.str.replace('.*', '').set_value(0, x.values[0])).values
我的策略是做一個GROUPBY然後將所有值設置爲除第一個以外的空字符串。這似乎不起作用,因爲我得到:
ValueError: Length of values does not match length of index
這意味着我得到的輸出不正確。任何想法/建議/改進歡迎。
我應該補充一點,我想概括一個解決方案,它可以在每個組的頂部或底部或中間選出值,所以我會給予更多的優先選擇,幫助我做到這一點的解決方案(瞭解,上面的示例顯示瞭如何僅在每個組的頂部單列出值,但是,我想概括一個解決方案,該解決方案允許我將它們排列在底部或中間)。
實際上,因爲數據在這裏排序,你可以使用'df.loc [df.A == df.A.shift(),'A'] ='''? – Zero
@零你可以假設它是爲這種情況排序的。然而,我試圖推廣一個解決方案,可以在每個組的中間或頂部或底部挑出一個值。對於這個問題,我剛剛問過如何在每個組的頂部單獨列出。如果我自己弄不明白,我會就此提出一個單獨的問題。 –
當你甚至有元素時,你會如何處理中間情況? – Zero