【发布时间】:2015-11-10 19:43:09
【问题描述】:
问题
我有一个坐标,我试图根据长/纬度精度减少行数。
X Y
0 -122.425892 37.774599
1 -122.425892 37.774599
2 -122.424363 37.800414
3 -122.426995 37.800873
4 -122.438738 37.771541
如您所见,小数点数最多为 6 点。我拥有的数据约为 800k 行。所以我创建了一个 for 循环来查看在增加/减少小数点数时删除了多少行
解决方案尝试
tr_df = pd.read_csv('file.csv', usecols=['X', 'Y'])
for i in list(range(0,7)):
df = tr_df
df.iloc[:,1:] = np.round(df.iloc[:,1:], decimals=i)
df = df.drop_duplicates(['X','Y'])
print(df.shape)
这样做会打印(1, 3) 6 次,这是不正确的。我在每一行之间放了一个print(df.shape),在循环顶部正确重置df=tr_df之后,它总是在drop_duplicates()之后转到(1, 3)。
问题
问题出在哪里?如果我通过手动增加decimals 来运行脚本,我会得到正确的输出(对于实际数据):
(4, 3)
(138, 3)
(8858, 3)
...
【问题讨论】:
标签: python loops for-loop pandas