我有一个与此类似的数据帧:
>>> d = {'ID': ['ID1', 'ID2', 'ID3', 'ID4', 'ID5', 'ID6', 'ID7', 'ID8', 'ID9', 'ID10'],
'A': [1, 1, 1, 1, 2, 2, 2, 2, 2, 2],
'B': [145,158,240,250,199,204,300,350,467,578]}
>>> df = pd.DataFrame(data=d)
我想创建一个新的系列F
,以标记列B
的每100个单元(从列B
中的第一个值开始计数,而不是从0开始计数)。列B
中的数字对于列A
中的每个数字都“重新启动”。对于列A
中的新数字,它应该启动一个新标志,并将列B
中的相应值作为新范围100的第一个数字。澄清一下,这种情况的预期结果是:
>>> outcome = {'ID': ['ID1', 'ID2', 'ID3', 'ID4', 'ID5', 'ID6', 'ID7', 'ID8', 'ID9', 'ID10'],
'A': [1, 1, 1, 1, 2, 2, 2, 2, 2, 2],
'B': [145,158,240,250,199,204,300,350,467,578],
'F': ['F1','F1','F1','F2','F3','F4','F4','F5','F6','F7']}
>>> outcome
A B F
ID1 1 145 F1
ID2 1 158 F1
ID3 1 240 F1
ID4 1 250 F2
ID5 2 199 F3
ID6 2 204 F3
ID7 2 300 F4
ID8 2 350 F4
ID9 2 467 F5
ID10 2 578 F6
我希望这一切都有意义,提前谢谢
这是我提议的(暴力)解决方案:
有兴趣看看是否有人能提供一个更漂亮的解决方案
我想到了一个简短但可读性较差的简化,我将其作为另一个答案发布,让您选择您喜欢的:
你可以做:
产出:
相关问题 更多 >
编程相关推荐