我有一个熊猫数据帧,格式如下:
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/