为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

皈依舞 2021-06-07 09:29:46
我有一个名为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())



查看完整回答
反对 回复 2021-06-08
?
DIEA

TA贡献1820条经验 获得超2个赞

您可以使用:

FP['avg_price/sqm'] = FP.groupby(['year', 'town', 'type'])['price/sqm'].mean()

和:

gdp['yearly_gdp'] = gdp.groupby(['year'])['value'].sum()

你不需要使用aggregatetransform

如果price/sqm是浮动的,只需使用以下方法对其进行转换:

FP['price/sqm'].astype(float)

我希望它能解决你的问题。


查看完整回答
反对 回复 2021-06-08
  • 2 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号