嗨,这很简单,但我想知道是否有人知道如何打印两列之间的差异。我目前有这个:
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
timestamp =''。join(timestamp)
但是这段代码非常繁琐,并没有提供正确的输出
答案 0 :(得分:1)
您可以将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
s可能会转换int
创建的每个range
值或更好地使用numpy.arange
,请转换为str
并列出并使用{ {1}}:
join