我有一个以下格式的 pandas 数据框:
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
请问有什么办法可以解决这个问题吗?
最佳答案
问题是 Python list
is a mutable type, and hence unhashable 。在您要放置 groupby
标准 df.Station
的位置,放置 df.Station.apply(tuple)
。这会将列表转换为元组,这些元组是可散列的(并且不可变的)。
例如:
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 groupby 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39622884/