我有一个数据框,其中包含一些客户的位置信息(因此我有一个包含客户ID的列以及其他包含纬度和经度的列),我正在尝试根据每个客户对NaN进行插值。
例如,如果我使用最近的方法进行插值(这里是虚构的值):
Customer_id Lat Lon
A 1 1
A NaN NaN
A 2 2
B NaN NaN
B 4 4
我希望B的NaN值为4而不是2。
我尝试过以下方法:
series.groupby('Customer_id').apply(lambda group: group.interpolate(method = 'nearest', limit_direction = 'both'))
NaN 的数量从 9003 减少到 94。但我不明白为什么还会留下一些缺失值。
我检查了一下,这 94 个缺失值对应的是已经被插值的客户记录。例如,
Customer_id Lat
0. A 1
1. A NaN
2. A NaN
3. A NaN
4. A NaN
它会正确地插值直到某个值(比方说它可以正确地插值1、2和3),然后将4留作NaN。
我尝试在插值中设置一个限制,使其大于每个客户端的最大记录数,但仍然无法解决问题。我不知道我的错误在哪里,有人能帮忙吗?
(我不知道是否需要提及,但我为此编造了自己的NaN。这是我使用的代码 如果行的索引不存在于另一个数据框中,则用NaN替换数据框中的某些值 我认为问题不在这里,但由于我很困惑实际问题出在哪里,所以我将它放在这里)