Python 根据列索引添加行

Python 根据列索引添加行,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个dataframe,它有以下列: id index1 index2 value DivA 1 4 3 DivA 3 6 4 DivB 1 3 5 DivB 5 7 3 在另一个数据帧上,我有以下内容: id index DivA 1 DivA 2 ... Di

我有一个dataframe,它有以下列:

 id     index1    index2    value
 DivA     1         4        3
 DivA     3         6        4
 DivB     1         3        5
 DivB     5         7        3
在另一个数据帧上,我有以下内容:

 id      index
DivA       1
DivA       2
      ...
DivA       10
DivB       1
      ...
最终结果: df2:

我想知道是否可以用'index1'和'index2'的方式向第二个df添加一个新列'value' 如果第一个数据帧“value”中没有值,则第二个df中的“value”可以有“nan”


谢谢你的帮助

使用df.melt('id')检查它将三列合并为一列,我要寻找的是我将'index1'和'index2'转换为'index',其中两列中缺少的值有一个nan,有什么想法吗?它可以工作,我发现pd.melt在很多任务中非常有用,但需要一些时间来理解这个概念,谢谢!
  #pd.melt first dataframe
    df3=pd.melt(df, id_vars=['id','value'], value_vars=['index1', 'index2'], value_name='index').drop(columns=['variable'])

#pd.concat second dataframe to the pd.met result, sort-values and drop duplicates in index 
(pd.concat([df3, df1], ignore_index=True).sort_values(by=['id','index'])).drop_duplicates(subset=['index'],keep='first')



     id  value  index
0   DivA    3.0      1
9   DivA    NaN      2
1   DivA    4.0      3
4   DivA    3.0      4
5   DivA    4.0      6
10  DivA    NaN     10
3   DivB    3.0      5
7   DivB    3.0      7
  #pd.melt first dataframe
    df3=pd.melt(df, id_vars=['id','value'], value_vars=['index1', 'index2'], value_name='index').drop(columns=['variable'])

#pd.concat second dataframe to the pd.met result, sort-values and drop duplicates in index 
(pd.concat([df3, df1], ignore_index=True).sort_values(by=['id','index'])).drop_duplicates(subset=['index'],keep='first')



     id  value  index
0   DivA    3.0      1
9   DivA    NaN      2
1   DivA    4.0      3
4   DivA    3.0      4
5   DivA    4.0      6
10  DivA    NaN     10
3   DivB    3.0      5
7   DivB    3.0      7