【发布时间】:2019-11-18 08:18:39
【问题描述】:
我有一个数据框,其中包含一些客户的位置(因此我有一个带有 Customer_id 的列,而其他列带有 Lat 和 Lon),我正在尝试根据每个客户插入 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。这是我使用的代码 Replace some values in a dataframe with NaN's if the index of the row does not exist in another dataframe 我认为问题不在这里,但因为我很困惑问题出在哪里,我就把它留在这里)
【问题讨论】:
-
对不起,我会在问题中更改它。我将它设置为一个变量,以便每次运行时更容易在管道中进行更改。但它被设置为最近的
标签: python python-3.x pandas dataframe interpolation