如何将两个列值叠加到一个列表中?

2024-04-25 07:08:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含三列(from、to、w)的数据帧:

      from to w
0     0   1  0.670820
1     0   5  0.612372
2     0   2  0.612372
3     0   3  0.577350
4     0   4  0.408248

如何根据给定的id从两列(from,to)中获取列表中的值?例如,在上面的示例中,对于给定的id 0,列表将是[1,5,2,3,4]。你知道吗

注意,id可能出现在from或两列中。在本例中,如果给定的id为1,则下面的预期列表将是[2,4,0,3,5]。你知道吗

     from  to   w
0     1   2  0.730297
1     1   4  0.730297
2     0   1  0.670820
3     1   3  0.516398
4     1   5  0.365148

我迭代dataframe中的行以生成列表:

myarr =[]
    for index, row in dftemp1.iterrows():
        from_id = row['from']
        to_id = row['to']
        if (from_id!=target_id):
            myarr.append(from_id)
        if (to_id!=target_id):
            myarr.append(to_id)

我想知道有没有更简单的方法来达到效果。任何帮助都将不胜感激。你知道吗


Tags: to数据fromid示例targetdataframe列表
1条回答
网友
1楼 · 发布于 2024-04-25 07:08:09

用你的第二个例子-

df

   from  to         w
0     1   2  0.730297
1     1   4  0.730297
2     0   1  0.670820
3     1   3  0.516398
4     1   5  0.365148

根据值是否等于您的ID,您可以argsort前两列中的值。你知道吗

v = df.iloc[:, :-1].values

i = np.arange(len(df))[:, None]
j = np.argsort(v == 1, axis=1)   # replace `1` with your ID

v[i, j][:, 0].tolist()
[2, 4, 0, 3, 5]

相关问题 更多 >