Python groupby.diff中的隐值错误

Python groupby.diff中的隐值错误,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,在中等大小的数据帧上尝试执行简单的diff时,我遇到了一个无用的ValueError。我追踪到它发生在一条特定的线路上,但这条线路没有什么不寻常的地方。(它确实对应于一个值,其中,groupu by键只有一个实例,但它不是数据中唯一的实例) 对于这段代码,在最后一行中,我得到: ValueErrorTraceback (most recent call last) <ipython-input-109-5d39d01dba69> in <module>() 3

在中等大小的数据帧上尝试执行简单的
diff
时,我遇到了一个无用的
ValueError
。我追踪到它发生在一条特定的线路上,但这条线路没有什么不寻常的地方。(它确实对应于一个值,其中,
groupu by
键只有一个实例,但它不是数据中唯一的实例)

对于这段代码,在最后一行中,我得到:

ValueErrorTraceback (most recent call last)
<ipython-input-109-5d39d01dba69> in <module>()
  3 
  4 tp1['date_diff'] = tp1.groupby('user_id')['dates_viewed'].diff(1)
----> 5 tp2['date_diff'] = tp2.groupby('user_id')['dates_viewed'].diff(1)

C:\Users\aleistra-admin\AppData\Local\Continuum\anaconda2\lib\site-packages\pandas\core\groupby\groupby.pyc in diff(self, periods)
C:\Users\aleistra-admin\AppData\Local\Continuum\anaconda2\lib\site-packages\pandas\core\groupby\groupby.pyc in wrapper(*args, **kwargs)
849                                                             *args, **kwargs)
850                     except (AttributeError):
--> 851                         raise ValueError
852 
853         return wrapper

ValueError: 
由于问题只发生在较大数据帧的上下文中,因此我无法提供一个有意义的小数据集来重现它;如前所述,几行的摘录并不显示该问题。这里的实际错误是什么?我如何解决它

编辑:“查看计数”和“时间周期”都是整数,范围为0-30左右

按照评论中的要求:

('248560ea75',          user_id  time_period  view_count  date_diff
7261  248560ea75                1             0        NaN
697   248560ea75                0             1        1.0)
('30db47b0e9',          user_id  time_period  view_count  date_diff
7260  30db47b0e9                2             0        NaN
7259  30db47b0e9                1             0        0.0
696   30db47b0e9                0             1        1.0)
('6df3af5d31',          user_id  time_period  view_count date_diff
7258  6df3af5d31                2             0        NaN)
('8434123132',          user_id  time_period  view_count  date_diff
7257  8434123132               11             0        NaN
7256  8434123132               10             0        0.0
7255  8434123132                9             0        0.0
7254  8434123132                2             0        0.0)

这里有问题的行是用户id为6df3af5d31的行。为了便于阅读,我在这里截短了用户id,它们实际上要长得多。同样,该行在该子样本中不会引起问题,仅在完整的~80K行数据帧的上下文中。

您能在groupby语句中向我们展示问题行被排序到的组吗<代码>用于名称,tp3中的组。groupby('user_id'):;打印(姓名、组)编辑问题以包括此内容正如您所提到的,这是一个调试困难的问题,但让我们试一试。我能看到的唯一突出的一点是,这是一个只有一行的组中唯一的一行。对于整个数据帧也是这样吗?如果您将另一个具有相同用户id的行添加到该数据帧,并在整个数据帧上重复groupby和diff,会发生什么情况?这是否有效?整个数据帧groupby中是否有其他组仅包含一行?您应该能够通过使用
tp2.groupby('user_id').filter(lambda x:x.shape[0]==1)
来检查这一点。正如我在问题中所指出的,这并不是唯一一种情况,一个user_id(或一个组)只有一行,我能够在较小的数据帧中对该行进行分组。(事实上,如果我将数据帧分块并分别分组,我就可以完全解决这个问题)。
tp3 = to_predict[['user_id', 'time_period', 'view_count']][74100:74110].copy()
tp3['date_diff'] =tp3.groupby('user_id')['view_count'].diff(1)
('248560ea75',          user_id  time_period  view_count  date_diff
7261  248560ea75                1             0        NaN
697   248560ea75                0             1        1.0)
('30db47b0e9',          user_id  time_period  view_count  date_diff
7260  30db47b0e9                2             0        NaN
7259  30db47b0e9                1             0        0.0
696   30db47b0e9                0             1        1.0)
('6df3af5d31',          user_id  time_period  view_count date_diff
7258  6df3af5d31                2             0        NaN)
('8434123132',          user_id  time_period  view_count  date_diff
7257  8434123132               11             0        NaN
7256  8434123132               10             0        0.0
7255  8434123132                9             0        0.0
7254  8434123132                2             0        0.0)