Python 如果特定ID的值不存在于另一个ID中,请将带有值的行插入ID

Python 如果特定ID的值不存在于另一个ID中,请将带有值的行插入ID,python,pandas,numpy,Python,Pandas,Numpy,如果其他ID中不存在D1值,而我的df['value']保留为空(不适用),我想更新并插入新行。谢谢你的帮助 输入 预期产出: D1 ID Value 0.02 1 1.2 0.04 1 1.6 0.06 1 1.9 0.08 1 2.8 0.1 1 0.02 2 4.5 0.04 2 4.1 0.06 2 0.08 2 3.6 0.1 2 0.02 3 2.7 0.0

如果其他ID中不存在D1值,而我的df['value']保留为空(不适用),我想更新并插入新行。谢谢你的帮助

输入

预期产出:

D1     ID   Value
0.02   1    1.2
0.04   1    1.6
0.06   1    1.9
0.08   1    2.8
0.1    1   
0.02   2    4.5
0.04   2    4.1
0.06   2    
0.08   2    3.6
0.1    2   
0.02   3    2.7
0.04   3    2.9
0.06   3    2.4
0.08   3    2.1
0.1    3    1.9

不幸的是,我写的代码有点偏离或者只是得到了多个错误消息,不像我的其他问题,我没有例子来说明。

使用
取消堆栈
堆栈
。链额外的
排序索引
重置索引
以实现所需的顺序

df_final = (df.set_index(['D1', 'ID']).unstack().stack(dropna=False)
              .sort_index(level=[1,0]).reset_index())

Out[952]:
      D1  ID  Value
0   0.02   1    1.2
1   0.04   1    1.6
2   0.06   1    1.9
3   0.08   1    2.8
4   0.10   1    NaN
5   0.02   2    4.5
6   0.04   2    4.1
7   0.06   2    NaN
8   0.08   2    3.6
9   0.10   2    NaN
10  0.02   3    2.7
11  0.04   3    2.9
12  0.06   3    2.4
13  0.08   3    2.1
14  0.10   3    1.9

请您进一步解释一下,因为我在ID列中没有看到任何D1,当然0.02不在ID中。问题已经回答,是D1的值链接到一个ID,所以如果另一个ID没有完全相同的D1值,那么我需要将其填充到当前ID中。希望这有帮助
df_final = (df.set_index(['D1', 'ID']).unstack().stack(dropna=False)
              .sort_index(level=[1,0]).reset_index())

Out[952]:
      D1  ID  Value
0   0.02   1    1.2
1   0.04   1    1.6
2   0.06   1    1.9
3   0.08   1    2.8
4   0.10   1    NaN
5   0.02   2    4.5
6   0.04   2    4.1
7   0.06   2    NaN
8   0.08   2    3.6
9   0.10   2    NaN
10  0.02   3    2.7
11  0.04   3    2.9
12  0.06   3    2.4
13  0.08   3    2.1
14  0.10   3    1.9