嗨,这很简单,但是我想知道是否有人知道如何打印两列之间的差异。我目前有这个:

    end | begin
    935    916
    961    916
    972    916


我正在努力实现以下目标:

    end | begin | diff
    935    916     916,917,918,919,920...935
    961    916     916,917,918...961
    972    916     916,917,918...972


有谁知道可能会产生这种情况的简单列操作?目前我拥有的代码是:

timestamp = []
for x in range(len(listdates)):
    while start_date <= listdates[x]:
        timestamp.append(str(start_date)+'|')
        start_date+=1
start_date = 916


时间戳=''.join(时间戳)

但是,此代码非常繁琐,无法提供正确的输出

最佳答案

您可以将applyaxis=1一起用于按行处理,然后将lambda函数与range一起使用:

print (df)
   end  begin
0  920    916
1  961    916
2  972    916

df['diff'] = df.apply(lambda x: range(x['begin'], x['end'] + 1), axis=1)
print (df)
  end  begin                                               diff
0  920    916                          (916, 917, 918, 919, 920)
1  961    916  (916, 917, 918, 919, 920, 921, 922, 923, 924, ...
2  972    916  (916, 917, 918, 919, 920, 921, 922, 923, 924, ...


并且如果可能需要string转换由int创建的每个range值,或者更好地使用numpy.arange,则转换为str并列出并使用join

df['diff'] = df.apply(lambda x: ','.join(np.arange(x['begin'], x['end']+ 1)
                                           .astype(str).tolist()), axis=1)
print (df)
   end  begin                                               diff
0  920    916                                916,917,918,919,920
1  961    916  916,917,918,919,920,921,922,923,924,925,926,92...
2  972    916  916,917,918,919,920,921,922,923,924,925,926,92...

关于python - 打印 Pandas 列之间的增量差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45151688/

10-12 19:08