我有一个熊猫数据帧,格式如下:

Arrival Departure Park Station Count
      8        10    5   [1,2]     1
      5        12    6   [3,4]     1
      8        10    5   [1,2]     1

我想按到达、离开、停车和车站来分组这个数据帧,但是由于车站是一个列表,我得到一个错误。输出应该如下所示:
    Arrival Departure Park Station Count
        8        10    5   [1,2]     2
        5        12    6   [3,4]     1

你能告诉我是否有办法解决这个问题吗?

最佳答案

问题是aPython list is a mutable type, and hence unhashable。在放入groupby标准的地方,改为放入df.Station。这将把列表转换成元组,元组是散列的(不可变的)。
例如:

In [66]: df = pd.DataFrame({'Arrival': [8, 5, 4], 'Station': [[1, 2], [3, 4], [1, 2]]})

In [67]: df.groupby([df.Arrival, df.Station.apply(tuple)]).Arrival.sum()
Out[67]:
Arrival  Station
4        (1, 2)     4
5        (3, 4)     5
8        (1, 2)     8
Name: Arrival, dtype: int64

相反地,
df.groupby([df.Arrival, df.Station]).Arrival.sum()

不会起作用的。

关于python - Pandas 分组列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39622884/

10-12 17:24