我有這個dataframe:
x y z parameter
0 26 24 25 Age
1 35 37 36 Age
2 57 52 54.5 Age
3 160 164 162 Hgt
4 182 163 172.5 Hgt
5 175 167 171 Hgt
6 95 71 83 Wgt
7 110 68 89 Wgt
8 89 65 77 Wgt
我pandas用來得到這個最終結果:
x y parameter
0 160 164 Hgt
1 182 163 Hgt
2 175 167 Hgt
我正在使用groupby()基于相同引數Hgt從原始資料中提取和隔離行dataframe
首先,我添加了一列將其設定為index:
df = df.insert(0,'index', [count for count in range(df.shape[0])], True)
而dataframe出來是這樣的:
index x y z parameter
0 0 26 24 25 Age
1 1 35 37 36 Age
2 2 57 52 54.5 Age
3 3 160 164 162 Hgt
4 4 182 163 172.5 Hgt
5 5 175 167 171 Hgt
6 6 95 71 83 Wgt
7 7 110 68 89 Wgt
8 8 89 65 77 Wgt
然后,我使用以下代碼根據index我需要的列進行分組和提取:
df1 = df.groupby('index')[['x', 'y','parameter']]
輸出是:
x y parameter
0 26 24 Age
1 35 37 Age
2 57 52 Age
3 160 164 Hgt
4 182 163 Hgt
5 175 167 Hgt
6 95 71 Wgt
7 110 68 Wgt
8 89 65 Wgt
之后,我使用以下代碼僅隔離Hgt值:
df2 = df1[df1['parameter'] == 'Hgt']
當我運行時df2,我收到一條錯誤訊息:
IndexError: Column(s) ['x', 'y', 'parameter'] already selected
我在這里錯過了什么嗎?怎么做才能得到最終結果?
uj5u.com熱心網友回復:
你真的需要groupby嗎?
>>> df.loc[df['parameter'] == 'Hgt', ['x', 'y', 'parameter']].reset_index(drop=True)
x y parameter
0 160 164 Hgt
1 182 163 Hgt
2 175 167 Hgt
uj5u.com熱心網友回復:
因為你問你做錯了什么,讓我指出無用/錯誤的代碼。
沒有任何判斷(這只是為了幫助您改進以后的代碼),幾乎所有內容都是不正確的。感覺就像是用一系列復雜的方法來做無用的事情。讓我說一些細節:
df = df.insert(0,'index', [count for count in range(df.shape[0])], True)
這似乎是一種非常復雜的做法df.reset_index()。甚至[count for count in range(df.shape[0])]可以通過range(df.shape[0])直接使用來簡化。
但是對于 a 甚至不需要此步驟,groupby因為您可以按索引級別分組:
df.groupby(level=0)
但是……groupby無論如何,這是無用的,因為您只有單個成員組。
此外,當您執行以下操作時:
df1 = df.groupby('index')[['x', 'y','parameter']]
df1是不是一個資料幀,但一個DataFrameGroupBy物件。當您知道自己在做什么時將其存盤在變數中非常有用,但是這會導致您的情況出現錯誤,因為您認為這是一個DataFrame. 您需要應用物件的聚合或轉換方法DataFrameGroupBy來取回 a DataFrame,而您沒有這樣做(可能是因為,如上所示,對信條成員組沒有什么有趣的事情要做)。
所以當你運行時:
df1[df1['parameter'] == 'Hgt']
再次,一切都是錯誤的,df1['parameter']相當于df.groupby('index')[['x', 'y','parameter']]['parameter'](您選擇兩次“引數”時出現錯誤的原因)。即使您洗掉了此錯誤,等式比較也會給出一個True/,False因為您仍然擁有您的DataFrameGroupBy而不是DataFrame,并且這將錯誤地嘗試子選擇DataFrameGroupBy.
我希望它有幫助!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/401838.html
標籤:Python 熊猫 数据框 pandas-groupby
下一篇:繞過歐盟同意請求
