数据如下:
Data = {'group_id:['1','1','1','1','2','2','2'], '源':['Twitter','Instagram','Twitter','Facebook','Facebook','Twitter','Instagram','Facebook'] “严重性”:[4,2,7,4,8,9,3,5]}
我需要:
1)取每个组的严重性代码的第一行 2)从已识别的每个组的严重性代码(从#1开始)中获取所有行的绝对值(差)。示例:第1组严重性代码(4)...第一行diff = 0;第二行diff = 2;第三行diff = 3;等等。与组2相同。 3)在每个组中,找到每个来源中最接近的邻居,直到第一行的严重程度。
我已经确定了第一行,并为严重性代码建立了索引。进行迭代时,该代码仅使用最后索引的严重性代码来计算差异。
df = pd.DataFrame(Data)
first_row = b.groupby(['group_id']).first()
for row in first1.itertuples(index=True, name='Pandas'):
value = getattr(row,'Severity')
df['dif'] = (df['Severity'] - value).abs()
我希望输出在带有添加的“ dif”列的数据框中。我可以为每个来源提取每个组中最近的邻居,其中True。重复该过程:提取其中为True的行,然后遍历False来查找具有新的第一行严重性的其他行。再次重复,直到没有剩余行或所有行均为False。