Python Pandas Dataframe-如何将两个列值堆叠到一个列表中?
我有一个包含三列(from、to、w)的数据帧: 如何根据给定的id从两列(from、to)中获取列表中的值?例如,在上面的示例中,对于给定的id 0,列表将是[1,5,2,3,4] 请注意,id可能出现在“发件人”或“两列”中。在本例中,如果给定id为1,则下面的预期列表将为[2,4,0,3,5]Python Pandas Dataframe-如何将两个列值堆叠到一个列表中?,python,pandas,stack,melt,Python,Pandas,Stack,Melt,我有一个包含三列(from、to、w)的数据帧: 如何根据给定的id从两列(from、to)中获取列表中的值?例如,在上面的示例中,对于给定的id 0,列表将是[1,5,2,3,4] 请注意,id可能出现在“发件人”或“两列”中。在本例中,如果给定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.
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)
我想知道是否有一种更简单的方法来实现这些结果。任何帮助都将不胜感激。使用您的第二个示例-
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 = 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]