如何将一列的值与另一列的索引或类别配对?

时间:2019-05-03 11:09:41

标签: python pandas

我正在尝试使用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]

请问这可能吗?

2 个答案:

答案 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]