我有一個名為FP13 列的數據框,派生了一個名為 的新字段price/sqm,并刪除了 10 列。FP['price/sqm'] = FP['price'] / FP['floor_area_sqm']FP = FP.loc[:,['year', 'town', 'type', 'price/sqm']]數據框有 700,000 行,看起來像這樣: year town type price/sqm0 1990 AMK 1 ROOM 290.3225811 1990 AMK 1 ROOM 193.5483872 1990 AMK 1 ROOM 258.0645163 1990 AMK 1 ROOM 193.5483874 1990 AMK 3 ROOM 646.5753425 1990 AMK 3 ROOM 686.567164我正在嘗試price/sqm根據['year','town','type']使用下面的代碼進行平均,但我得到了TypeError: incompatible index of inserted column with frame indexFP['avg_price/sqm'] = FP.groupby(['year', 'town', 'type'])['price/sqm'].aggregate(mean)我有一個用于不同數據框的類似代碼,它可以工作,所以我不確定為什么它不適用于此代碼。另一個代碼是gdp['yearly_gdp'] = gdp.groupby(['year'])['value'].transform(sum)我假設它的原因price/sqm是一個 str 并嘗試了以下代碼將它轉換為一個浮點數,但我要么得到一個錯誤,要么它仍然作為 str 返回。FP['price/sqm'] = float(FP['price/sqm'])FP['price/sqm'] = FP['price/sqm'].astype(float)FP['price/sqm'] = pd.to_numeric(FP['price/sqm'], errors = 'coerce')FP[['price/sqm']] = FP[['price/sqm']].apply(pd.to_numeric)有人可以建議我如何解決這個問題嗎?FP.dtypes: year town type price/sqm0 1990 AMK 1 ROOM 290.3225811 1990 AMK 1 ROOM 193.5483872 1990 AMK 1 ROOM 258.0645163 1990 AMK 1 ROOM 193.5483874 1990 AMK 3 ROOM 646.5753425 1990 AMK 3 ROOM 686.567164year objecttown objecttype objectprice/sqm float64dtype: objectdf1.dtypes:month objecttown objecttype objectblock objectstreet_name objectstorey_range objectfloor_area_sqm float64flat_model objectlease_commence_date int64resale_price int64dtype: object
2 回答

智慧大石
TA貢獻1946條經驗 獲得超3個贊
我認為這對您有用,因為您可以根據數據幀的索引來轉換結果
FP['avg_price/sqm'] = FP.groupby(['year', 'town', 'type'])['price/sqm'].transform(lambda x:x.mean())

DIEA
TA貢獻1820條經驗 獲得超3個贊
您可以使用:
FP['avg_price/sqm'] = FP.groupby(['year', 'town', 'type'])['price/sqm'].mean()
和:
gdp['yearly_gdp'] = gdp.groupby(['year'])['value'].sum()
你不需要使用aggregate
或transform
如果price/sqm
是浮動的,只需使用以下方法對其進行轉換:
FP['price/sqm'].astype(float)
我希望它能解決你的問題。
添加回答
舉報
0/150
提交
取消