我有一个名为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条经验 获得超2个赞
您可以使用:
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
提交
取消