首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将一个dataframe中的值更改为另一个dataframe中的值,并且最接近匹配?

如何将一个dataframe中的值更改为另一个dataframe中的值,并且最接近匹配?
EN

Stack Overflow用户
提问于 2019-05-03 02:10:39
回答 1查看 84关注 0票数 1

我有一个带有房地产对象参数(“房间”、“广场”等)的数据帧。我想要从我从相同的初始数据集创建的(' rooms‘- 'mean Square')数据框中替换'Rooms’参数等于0的行,并将相应的房间数替换为相应的房间数。

我会使用.replace方法,但问题是-0房间行的实际平方值与平均值不完全匹配。

我刚接触pandas,所以我尝试的所有解决方案都是基于将列值放入python列表并使用循环,这简直是噩梦。我在stackoverflow上看到的所有其他类似的主题都只适用于精确匹配。

这是我想要更改值('Rooms')的初始数据帧的切片和部分:

Data.loc[数据‘房间’== 0][‘房间’,‘正方形’]

代码语言:javascript
复制
      Rooms Square
1397  0.0   138.427694
1981  0.0   212.932361
2269  0.0   41.790881
3911  0.0   49.483501
4366  0.0   81.491446
4853  0.0   2.377248
6149  0.0   38.697117
8834  0.0   87.762616

这是创建“房间”-“均方”数据帧的代码:

mean_square =data.loc[(数据‘房间’< 6) &(数据‘房间’>0)].groupby(‘房间’,as_index=False)‘正方形’..mean()

这就是结果:

代码语言:javascript
复制
    Rooms   Square
0   1.0     41.323277
1   2.0     56.788214
2   3.0     76.903234
3   4.0     98.377544
4   5.0     122.614941

例如,对于1397项,我希望0.0更改为5.0 (~138平方米最接近于4个房间的~122平方米的平均值)。

EN

回答 1

Stack Overflow用户

发布于 2019-05-03 02:18:47

这是pd.merge_asof。将第一个切片作为df1,第二个切片作为df2,我们可以找到最接近的匹配项'Rooms_y',并将结果与原始索引对齐。

代码语言:javascript
复制
import pandas as pd

df1['Rooms'] = (pd.merge_asof(df1.reset_index().sort_values('Square'), 
                              df2.sort_values('Square'), 
                              on='Square', direction='nearest')
                   .set_index('index')['Rooms_y']
                )

输出:

代码语言:javascript
复制
      Rooms      Square
1397    5.0  138.427694
1981    5.0  212.932361
2269    1.0   41.790881
3911    2.0   49.483501
4366    3.0   81.491446
4853    1.0    2.377248
6149    1.0   38.697117
8834    4.0   87.762616
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55958014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档