将派生字段更改为浮动并获取派生字段的平均值

我有一个名为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/sqm

0  1990   AMK   1 ROOM    290.322581

1  1990   AMK   1 ROOM    193.548387

2  1990   AMK   1 ROOM    258.064516

3  1990   AMK   1 ROOM    193.548387

4  1990   AMK   3 ROOM    646.575342

5  1990   AMK   3 ROOM    686.567164

我正在尝试price/sqm根据['year','town','type']使用下面的代码进行平均,但我得到了TypeError: incompatible index of inserted column with frame index


FP['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/sqm

0  1990   AMK   1 ROOM    290.322581

1  1990   AMK   1 ROOM    193.548387

2  1990   AMK   1 ROOM    258.064516

3  1990   AMK   1 ROOM    193.548387

4  1990   AMK   3 ROOM    646.575342

5  1990   AMK   3 ROOM    686.567164

year        object

town        object

type        object

price/sqm   float64

dtype: object

df1.dtypes:


month               object

town                object

type                object

block               object

street_name         object

storey_range        object

floor_area_sqm      float64

flat_model          object

lease_commence_date int64

resale_price        int64

dtype:       object



皈依舞
浏览 169回答 2
2回答

智慧大石

我认为这对您有用,因为您可以根据数据帧的索引来转换结果FP['avg_price/sqm'] = FP.groupby(['year', 'town', 'type'])['price/sqm'].transform(lambda x:x.mean())

DIEA

您可以使用: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)我希望它能解决你的问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python