嗨,这很简单,但是我想知道是否有人知道如何打印两列之间的差异。我目前有这个:
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(时间戳)
但是,此代码非常繁琐,无法提供正确的输出
最佳答案
您可以将apply
与axis=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/