Python 如何将一列的值与另一列的索引或类别配对?
我试图使用pandas和groupby方法将特定列的值与指定索引(Start)配对。我的数据集是:Python 如何将一列的值与另一列的索引或类别配对?,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我试图使用pandas和groupby方法将特定列的值与指定索引(Start)配对。我的数据集是: Start Times Chicago 2 Detroit 0 Minnesota 3 New York 1 我想要实现的是: Start Int Time Pairs Chicago Detroit [2,0] Detroit Minnesota [0,3] Minnesota New Yor
Start Times
Chicago 2
Detroit 0
Minnesota 3
New York 1
我想要实现的是:
Start Int Time Pairs
Chicago Detroit [2,0]
Detroit Minnesota [0,3]
Minnesota New York [3,1]
这可能吗?我该怎么做?这里有一个用于连接系列的移位版本的:
df_ = (df.Start.astype(str)
.shift(1)
.str.cat(df.Start.astype(str), sep=',')[1:]
.str.split(',', expand=True))
df_.columns = ['Start', 'Int']
df_['Time Pairs'] = (df.Times.astype(str).shift(1)
.str.cat(df.Times.astype(str))[1:]
.apply(list))
虽然没有明确pairinig值的标准(移动行?),但这是获得结果的(粗略)方法:
dftot = pd.DataFrame({'Start':df.Start[:-1].values,
'Int': df.Start[1:].values,
'Time Pairs' : [[i,j] for i,j in zip(df['Times'][:-1].values,df['Times'][1:].values)]})
输出
dftot
Start Int Time Pairs
0 Chicago Detroit [2, 0]
1 Detroit Minnesota [0, 3]
2 Minnesota New York [3, 1]
配对值的标准是什么?不同的位置有一个唯一的旅行ID-通过时间对,我应该能够获得相同旅行ID的频率(计数)。我可以通过创建箱(例如[0,5],[5,10]ref.time列)使代码正常工作,但这不是我要的计数(频率)。理想情况下,我希望将我的数据集作为第二个附件进行排序,这样我就可以继续编写代码,并在每个实例之间获得正确的旅行ID计数。非常感谢,我现在将尝试答案,并尽快返回给您。极好的解决方案!!现在我可以得到所有适用的组合和时间对。非常感谢!!非常感谢您,您的解决方案也非常有效!
dftot
Start Int Time Pairs
0 Chicago Detroit [2, 0]
1 Detroit Minnesota [0, 3]
2 Minnesota New York [3, 1]