我有一个数据框和一个列表。我想迭代列表中的元素并在数据帧中找到它们的位置,然后将其存储到新的数据帧
my_list = ['1','2','3','4','5']
df1 = pd.DataFrame(my_list, columns=['Num'])
dataframe: df1
Num
0 1
1 2
2 3
3 4
4 5
dataframe: df2
0 1 2 3 4
0 9 12 8 6 7
1 11 1 4 10 13
2 5 14 2 0 3
我尝试过与此类似的东西但是没有工作
for x in my_list:
i,j= np.array(np.where(df==x)).tolist()
df2['X'] = df.append(i)
df2['Y'] = df.append(j)
所以寻找像这样的结果
数据框: df1 已更新
Num X Y
0 1 1 1
1 2 2 2
2 3 2 4
3 4 1 2
4 5 2 0
任何提示或想法都将受到赞赏
答案 0 :(得分:0)
为什么不将df2设为平面数据帧,而不是试图在df2中找到值。
df2 = pd.melt(df2)
df2.reset_index(inplace=True)
df2.columns = ['X', 'Y', 'Num']
所以现在你的df2看起来像这样:
Index X Y Num
0 0 0 9
1 1 0 11
2 2 0 5
3 3 1 12
4 4 1 1
5 5 1 14
您当然可以按Num排序,如果您只想要列表中的值,则可以进一步过滤df2:
df2 = df2[df2.Num.isin(my_list)]