我有这个数据:
studyarea_pcdn
POSTCODE Number of meters
0 NE4 9UP 41
1 NE4 9UN 32
2 NE4 9UL 29
3 NE4 9EN 27
4 NE4 9DY 25
5 NE4 9ED 22
6 NE4 9EL 18
7 NE4 9EE 13
8 NE4 9UJ 11
9 NE4 9DX 6
10 NE4 9EA 4我还有另一个:
sa_gas_pcd_2018[['POSTCODE', 'Number of meters']]
POSTCODE Number of meters
628318 NE4 9UP 41
628315 NE4 9UJ 36
628317 NE4 9UN 32
628199 NE4 9DY 29
628201 NE4 9EE 28
628316 NE4 9UL 28
628205 NE4 9EN 26
628200 NE4 9ED 20
628198 NE4 9DX 19
628204 NE4 9EL 17我想从sa_gas_pcd_2018中选择那些具有与studyarea_pcdn‘邮政编码’相匹配的邮政编码并且与studyarea_pcdn'Number of meters‘相比有米+- 2的行
正确的答案应该是:
POSTCODE Number of meters
628318 NE4 9UP 41
628317 NE4 9UN 32
628316 NE4 9UL 28
628205 NE4 9EN 26
628200 NE4 9ED 20
628204 NE4 9EL 17我已经尝试了很多事情,但我真的被困住了,因为我不知道该如何界定这个问题。如果有人有任何指点的话,我很高兴。
发布于 2022-09-13 13:56:58
这实际上只是一个内部合并,然后是一个.loc过滤器的绝对值的差异。
df = pd.DataFrame({'POSTCODE': ['NE4 9UP',
'NE4 9UN',
'NE4 9UL',
'NE4 9EN',
'NE4 9DY',
'NE4 9ED',
'NE4 9EL',
'NE4 9EE',
'NE4 9UJ',
'NE4 9DX',
'NE4 9EA'],
'Number of meters': [41, 32, 29, 27, 25, 22, 18, 13, 11, 6, 4]})
df2 = pd.DataFrame({'POSTCODE': ['NE4 9UP',
'NE4 9UJ',
'NE4 9UN',
'NE4 9DY',
'NE4 9EE',
'NE4 9UL',
'NE4 9EN',
'NE4 9ED',
'NE4 9DX',
'NE4 9EL'],
'Number of meters': [41, 36, 32, 29, 28, 28, 26, 20, 19, 17]})
df.rename(columns={'Number of meters':'m'}, inplace=True)
df = df.merge(df2, on='POSTCODE')
df.loc[abs((df['Number of meters']-df['m']))<=2].drop(columns='m')输出
POSTCODE Number of meters
0 NE4 9UP 41
1 NE4 9UN 32
2 NE4 9UL 28
3 NE4 9EN 26
5 NE4 9ED 20
6 NE4 9EL 17https://stackoverflow.com/questions/73704077
复制相似问题