在转置第一个数据帧的一半后合并两个非QEQUAL数据帧

2024-03-29 00:13:58 发布

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

这是第一个数据帧:

   PARAM RULEID CLASSID
0   n311    0   RlfProfile
1   n311    1   RlfProfile
2   n311    10  RlfProfile
3   n311    11  RlfProfile
4   n311    12  RlfProfile
5   n311    13  RlfProfile
6   n311    14  RlfProfile
7   n311    15  RlfProfile
8   n311    16  RlfProfile
9   n311    17  RlfProfile
10  n311    18  RlfProfile
11  n311    2   RlfProfile
12  n311    3   RlfProfile
13  n311    4   RlfProfile
14  n311    5   RlfProfile
15  n311    6   RlfProfile
16  n311    7   RlfProfile
17  n311    8   RlfProfile
18  n311    9   RlfProfile
19  n310    0   RlfProfile
20  n310    1   RlfProfile
21  n310    10  RlfProfile
22  n310    11  RlfProfile
23  n310    12  RlfProfile
24  n310    13  RlfProfile
25  n310    14  RlfProfile
26  n310    15  RlfProfile
27  n310    16  RlfProfile
28  n310    17  RlfProfile
29  n310    18  RlfProfile
30  n310    2   RlfProfile
31  n310    3   RlfProfile
32  n310    4   RlfProfile
33  n310    5   RlfProfile
34  n310    6   RlfProfile
35  n310    7   RlfProfile
36  n310    8   RlfProfile
37  n310    9   RlfProfile
38  t301    0   RlfProfile
39  t301    1   RlfProfile
40  t301    10  RlfProfile
41  t301    11  RlfProfile
42  t301    12  RlfProfile
43  t301    13  RlfProfile
44  t301    14  RlfProfile
45  t301    15  RlfProfile
46  t301    16  RlfProfile
47  t301    17  RlfProfile
48  t301    18  RlfProfile
49  t301    2   RlfProfile
50  t301    3   RlfProfile
51  t301    4   RlfProfile
52  t301    5   RlfProfile
53  t301    6   RlfProfile
54  t301    7   RlfProfile
55  t301    8   RlfProfile
56  t301    9   RlfProfile
57  t310    0   RlfProfile
58  t310    1   RlfProfile
59  t310    10  RlfProfile
60  t310    11  RlfProfile
61  t310    12  RlfProfile
62  t310    13  RlfProfile
63  t310    14  RlfProfile
64  t310    15  RlfProfile
65  t310    16  RlfProfile
66  t310    17  RlfProfile
67  t310    18  RlfProfile
68  t310    2   RlfProfile
69  t310    3   RlfProfile
70  t310    4   RlfProfile
71  t310    5   RlfProfile
72  t310    6   RlfProfile
73  t310    7   RlfProfile
74  t310    8   RlfProfile
75  t310    9   RlfProfile
76  t311    0   RlfProfile
77  t311    1   RlfProfile
78  t311    10  RlfProfile
79  t311    11  RlfProfile
80  t311    12  RlfProfile
81  t311    13  RlfProfile
82  t311    14  RlfProfile
83  t311    15  RlfProfile
84  t311    16  RlfProfile
85  t311    17  RlfProfile
86  t311    18  RlfProfile
87  t311    2   RlfProfile
88  t311    3   RlfProfile
89  t311    4   RlfProfile
90  t311    5   RlfProfile
91  t311    6   RlfProfile
92  t311    7   RlfProfile
93  t311    8   RlfProfile
94  t311    9   RlfProfile

这是第二个数据帧:

  RULEID CLASSID    SID     t301  n311 n310 t310    t311
0   0   RlfProfile  MANAKV  2000    1   20  2000    10000
1   1   RlfProfile  MANAKV  1000    1   10  500     5000
2   10  RlfProfile  MANAKV  400     1   20  2000    3000
3   11  RlfProfile  MANAKV  400     1   20  2000    3000
4   12  RlfProfile  MANAKV  400     1   20  2000    3000
5   13  RlfProfile  MANAKV  400     1   20  2000    3000
6   14  RlfProfile  MANAKV  400     1   20  2000    3000
7   15  RlfProfile  MANAKV  400     1   20  2000    3000
8   16  RlfProfile  MANAKV  400     1   20  2000    3000
9   17  RlfProfile  MANAKV  400     1   20  2000    3000
10  18  RlfProfile  MANAKV  400     1   20  2000    3000
11  2   RlfProfile  MANAKV  400     1   20  2000    3000
12  3   RlfProfile  MANAKV  400     1   20  2000    3000
13  4   RlfProfile  MANAKV  400     1   20  2000    3000
14  5   RlfProfile  MANAKV  400     1   20  2000    3000
15  6   RlfProfile  MANAKV  400     1   20  2000    3000
16  7   RlfProfile  MANAKV  400     1   20  2000    3000
17  8   RlfProfile  MANAKV  400     1   20  2000    3000
18  9   RlfProfile  MANAKV  400     1   20  2000    3000
19  0   RlfProfile  MANSRO  2000    1   20  2000    10000
20  1   RlfProfile  MANSRO  1000    1   10  500     5000
21  10  RlfProfile  MANSRO  1000    1   20  2000    3000
22  11  RlfProfile  MANSRO  1000    1   20  2000    3000
23  12  RlfProfile  MANSRO  1000    1   20  2000    3000
24  13  RlfProfile  MANSRO  1000    1   20  2000    3000
25  14  RlfProfile  MANSRO  1000    1   20  2000    3000
26  15  RlfProfile  MANSRO  1000    1   20  2000    3000
27  16  RlfProfile  MANSRO  1000    1   20  2000    3000
28  17  RlfProfile  MANSRO  1000    1   20  2000    3000
29  18  RlfProfile  MANSRO  1000    1   20  2000    3000
30  2   RlfProfile  MANSRO  1000    1   20  2000    3000
31  3   RlfProfile  MANSRO  1000    1   20  2000    3000
32  4   RlfProfile  MANSRO  1000    1   20  2000    3000
33  5   RlfProfile  MANSRO  1000    1   20  2000    3000
34  6   RlfProfile  MANSRO  1000    1   20  2000    3000
35  7   RlfProfile  MANSRO  1000    1   20  2000    3000
36  8   RlfProfile  MANSRO  1000    1   20  2000    3000
37  9   RlfProfile  MANSRO  1000    1   20  2000    3000
38  0   RlfProfile  MBHQDL  2000    1   20  2000    10000
39  1   RlfProfile  MBHQDL  1000    1   10  500     5000
40  10  RlfProfile  MBHQDL  400     1   20  2000    3000
41  11  RlfProfile  MBHQDL  400     1   20  2000    3000
42  12  RlfProfile  MBHQDL  400     1   20  2000    3000
43  13  RlfProfile  MBHQDL  400     1   20  2000    3000
44  14  RlfProfile  MBHQDL  400     1   20  2000    3000
45  15  RlfProfile  MBHQDL  400     1   20  2000    3000
46  16  RlfProfile  MBHQDL  400     1   20  2000    3000
47  17  RlfProfile  MBHQDL  400     1   20  2000    3000
48  18  RlfProfile  MBHQDL  400     1   20  2000    3000
49  2   RlfProfile  MBHQDL  400     1   20  2000    3000
50  3   RlfProfile  MBHQDL  400     1   20  2000    3000

我需要以上两个数据帧来获得这种类型的输出数据帧: 这只是一些行的示例输出

 RULEID   CLASSID   SID     Parameter Value

   0     RlfProfile MANAKV  t301      2000
   0     RlfProfile MANAKV  n311      1
   0     RlfProfile MANAKV  n310      20
   0     RlfProfile MANAKV  t310      2000
   0     RlfProfile MANAKV  t311      10000
   1    RlfProfile  MANAKV  t301      1000
   1    RlfProfile  MANAKV  n311      1
   1    RlfProfile  MANAKV  n310      10    
   1    RlfProfile  MANAKV  t310      500       
   1    RlfProfile  MANAKV  t311      5000
   0    RlfProfile  MBHQDL  t301      2000  
   0    RlfProfile  MANAKV  n311      1 

1条回答
网友
1楼 · 发布于 2024-03-29 00:13:58

IIUC您需要melt然后merge

假设您的数据帧分别被称为df1df2

df2a = pd.melt(df2,id_vars=['RULEID','CLASSID','SID'],var_name='PARAM')


df3 = pd.merge(df1,df2a,on=['RULEID','CLASSID','PARAM'],how='left')

print(df3[df2a.columns]) # maintains order of columns. 

     RULEID     CLASSID     SID PARAM  value
0         0  RlfProfile  MANAKV  n311      1
1         0  RlfProfile  MANSRO  n311      1
2         0  RlfProfile  MBHQDL  n311      1
3         1  RlfProfile  MANAKV  n311      1
4         1  RlfProfile  MANSRO  n311      1
..      ...         ...     ...   ...    ...
250       7  RlfProfile  MANSRO  t311   3000
251       8  RlfProfile  MANAKV  t311   3000
252       8  RlfProfile  MANSRO  t311   3000
253       9  RlfProfile  MANAKV  t311   3000
254       9  RlfProfile  MANSRO  t311   3000

相关问题 更多 >