要根据python中的特定条件将一列中的值替换为另一列中的值吗
我想用该行下一列的值替换ABC。若ABC位于最后一列,则该值应来自上一列。如果存在nan,则不应将其替换为任何其他值。事实上,我们必须在nan出现之前进行此操作 数据帧如下所示:要根据python中的特定条件将一列中的值替换为另一列中的值吗,python,pandas,Python,Pandas,我想用该行下一列的值替换ABC。若ABC位于最后一列,则该值应来自上一列。如果存在nan,则不应将其替换为任何其他值。事实上,我们必须在nan出现之前进行此操作 数据帧如下所示: C1 C2 C3 ……. C47 C48 C49 C50 1 0 ABC 15 ……. 29 ABC 90 50 2 ABC ABC 7 ……. 26 10 ABC 30 3 ABC ABC ABC ……. ABC ABC ABC ABC 4 6 20 32 ……
C1 C2 C3 ……. C47 C48 C49 C50
1 0 ABC 15 ……. 29 ABC 90 50
2 ABC ABC 7 ……. 26 10 ABC 30
3 ABC ABC ABC ……. ABC ABC ABC ABC
4 6 20 32 ……. 18 44 ABC ABC
5 2 ABC 24 ……. 16 27 29 ABC
6 23 4 49 ……. 11 52 33 9
7 17 12 2 ……. ABC 31 nan nan
8 ABC nan nan ……. nan nan nan nan
9 34 36 2 ……. 19 ABC nan nan
输出应为:
C1 C2 C3 ……. C47 C48 C49 C50
1 0 15 15 ……. 29 90 90 50
2 7 7 7 ……. 26 10 30 30
3 0 0 0 ……. 0 0 0 0
4 6 20 32 ……. 18 44 44 44
5 2 24 24 ……. 16 27 29 29
6 23 4 49 ……. 11 52 33 9
7 17 12 2 ……. 31 31 nan nan
8 0 nan nan ……. nan nan nan nan
9 34 36 2 ……. 19 19 nan nan
请注意,只有当该特定行的其余列中没有值时,ABC才会为0。为什么在第4行中ABC被分配为44而不是0?荒谬的逻辑!!你说过你想要下一列的值!第五排的ABC是24,而不是2。您如何决定从哪一列获取ABC的价值?右还是左?@KMM在处理逻辑运算时,定义良好且一致的规则非常重要(必要)。您对希望发生的事情的描述与提供的示例不匹配,这使得我们无法提供帮助(即,我们不知道您试图实现的逻辑是什么)。请清理您的示例,以便我们能够更好地提供帮助。@Nihal最初您必须从右侧选择值,如果右侧没有可用的值,您可以从左侧选择,如第5行所示。我认为这也应该解决关于第四排的问题。谢谢。@tnknepp我知道规则不一致,但这是进行分析的要求。让我更深入地解释一下。一旦nan开始出现,其他列中就不会出现其他值或ABC。然后,正如我向Nihal解释的那样,最初的值应该只从右侧列中选取,如果值在右侧不可用(如果ABC出现在第36列到第50列中),则只从左侧列中分配值。在所有列仅包含ABC的情况下,它将替换为0。