【发布时间】:2016-04-15 14:43:55
【问题描述】:
我有一个带有以下列的 pandas 数据框。
order_id latitude
0 519 19.119677
1 519 19.119677
2 520 19.042117
3 520 19.042117
4 520 19.042117
5 521 19.138245
6 523 19.117662
7 523 19.117662
8 523 19.117662
9 523 19.117662
10 523 19.117662
11 524 19.137793
12 525 19.119372
13 526 0.000000
14 526 0.000000
15 526 0.000000
16 527 19.133430
17 528 0.000000
18 529 19.118284
19 530 0.000000
20 531 19.114269
21 531 19.114269
22 532 19.136292
23 533 19.119075
24 533 19.119075
25 533 19.119075
26 534 19.119677
27 535 19.119677
28 535 19.119677
29 535 19.119677
order_id 重复,我想要唯一的 order_id 值,我可以通过它获得
unique_order_id = pd.unique(tsp_data['order_id'])
array(['519', '520', '521', '523', '524', '525', '526', '527', '528',
'529', '530', '531', '532', '533', '534', '535'], dtype=object)
这会返回正确的唯一值。我将它存储在 unique_order_id 变量中。现在我只想要唯一 order_id 值的对应 lat 值。
我正在做这样的事情。
tsp_data['latitude'][tsp_data['order_id'].isin(unique_order_id)]
但它返回了所有 30 行。我哪里错了?请帮忙
【问题讨论】:
-
为什么不直接删除重复项?
df.drop_duplicates()? -
或者你可以做
df.groupby('order_id').first().reset_index() -
至于您尝试失败的原因,通过传递
isin您正在测试成员资格,因此无论如何它都会返回所有行,因为每个 order_id 都存在行