我正在尝试使用pandas和group-by方法将特定列的值与指定索引配对(开始)。我的数据集是:
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]
请问这可能吗?
答案 0 :(得分:2)
这里是使用Series.str.cat
来连接Series
的移位版本的
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))
Start Int Time Pairs
1 Chicago Detroit [2, 0]
2 Detroit Minnesota [0, 3]
3 Minnesota NewYork [3, 1]
答案 1 :(得分:1)
尽管并不清楚对值的标准(移动行吗?),但这是获得结果的一种(粗略)方法:
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]