【发布时间】:2018-11-30 03:26:17
【问题描述】:
我有 98,000 个美国家庭街道地址,我需要按“步行”顺序排序,即按照您步行的顺序列出,沿着街道的一侧,然后过马路然后往回走。
import pandas as pd
df = pd.read_excel('c:pdsort.xlsx')
# add boolean column for even or odd on number column
is_even = df.loc[:,'number'] % 2 == 0
df.loc[:, 'even'] = is_even
# group and then sort by number
df.groupby(['town','street','even']).apply(lambda x: x.sort_values('number'))
# sort odd numbers ascending and even numbers descending
所需的 df 结果,对奇数街道号进行升序排序,然后对偶数切换到降序排序。 [对不起,第一个stackoverflow问题,还没有资格复制Jupyter笔记本的图像]
4 列:数字、街道、城镇、偶数
列“数字”的期望结果: 1231 1233 1235 1237 1239 1238 1236 1234 1232 1230
【问题讨论】:
-
如果我理解正确的话,你首先要
groupbystreet。 然后您对奇数/偶数进行分区,对每个列表进行排序,并根据需要连接结果。作为最终输出,您是否将整个数据库按新顺序排序?请给出一个样本输入和期望的输出,其中包含两到三条街道,每条街道可能有四栋房屋。
标签: python python-3.x pandas sorting pandas-groupby