Python 熊猫群居名单
我有一个熊猫数据框,格式如下:Python 熊猫群居名单,python,list,pandas,dataframe,Python,List,Pandas,Dataframe,我有一个熊猫数据框,格式如下: 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 Sta
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
你能告诉我是否有办法解决这个问题吗 问题是,一个。将groupby
criteriadf.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()
不行
import pandas as pd
df = pd.DataFrame({'arrival':[8,5,8], 'departure':[10,12,10], \
'park':[5,6,5], 'station':[[1,2], [3,4], [1,2]]})
df['arrival_station'] = df.station.apply(lambda x: x[0])
df['departure_station'] = df.station.apply(lambda x: x[1])
print df
arrival departure park station arrival_station departure_station
0 8 10 5 [1, 2] 1 2
1 5 12 6 [3, 4] 3 4
2 8 10 5 [1, 2] 1 2
现在您的站点数据是免费的,您可以像往常一样进行分组 您想要的输出是什么?我想通过根据到达、离开、停车和车站对行进行分组来获得一个数据帧。它可以工作,但它给了我一个系列。如何将其制作成数据帧?@user36729每当您有一个系列
s
,并且希望将其制作成数据帧时,您可以使用s.to_frame()
。谢谢。这样,“到达”和“站点”在数据帧的索引中就粘在一起了。@user36729很乐意回答,但这些问题与您原来的问题关系不大,而与一般的groupby
相关。在评论中进行对话有点困难。但是,在.to_frame()
之后,可以调用.reset_index()
。如果它抱怨现有列,请在之间使用.rename(columns={'Arrival':'count})
(或您拥有的任何列)。