我有一个带有房地产对象参数(“房间”、“广场”等)的数据帧。我想要从我从相同的初始数据集创建的(' rooms‘- 'mean Square')数据框中替换'Rooms’参数等于0的行,并将相应的房间数替换为相应的房间数。
我会使用.replace方法,但问题是-0房间行的实际平方值与平均值不完全匹配。
我刚接触pandas,所以我尝试的所有解决方案都是基于将列值放入python列表并使用循环,这简直是噩梦。我在stackoverflow上看到的所有其他类似的主题都只适用于精确匹配。
这是我想要更改值('Rooms')的初始数据帧的切片和部分:
Data.loc[数据‘房间’== 0][‘房间’,‘正方形’]
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()
这就是结果:
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平方米的平均值)。
发布于 2019-05-03 02:18:47
这是pd.merge_asof。将第一个切片作为df1,第二个切片作为df2,我们可以找到最接近的匹配项'Rooms_y',并将结果与原始索引对齐。
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']
)输出:
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.762616https://stackoverflow.com/questions/55958014
复制相似问题