如何使用python将值从column3映射到column1

如何使用python将值从column3映射到column1,python,pandas,Python,Pandas,我希望将第3列中的值映射到第1列。如果第1列中没有值,如果第3列也为空,则不会映射任何值 如果列1和列3都有不同的值,那么我们需要将值从列3映射到列1 column1 column2 column3 2225 India 2227 UK 35604 32578 USA 32578 Dubai 7528 Bhutan Indi

我希望将第3列中的值映射到第1列。如果第1列中没有值,如果第3列也为空,则不会映射任何值

如果列1和列3都有不同的值,那么我们需要将值从列3映射到列1

column1    column2    column3

2225        India      2227
             UK        35604
32578       USA        32578
            Dubai
7528        Bhutan    
            India      37890
36756       Italy      36756
预期输出:

column1    column2    column3

2227        India      2227
35604        UK        35604
38956       USA        38956
            Dubai
7528        Bhutan    
37890       India      37890
36756       Italy      36756
df['column1'] = df['column1'].fillna(df['column3'])
我一直在使用的代码:

column1    column2    column3

2227        India      2227
35604        UK        35604
38956       USA        38956
            Dubai
7528        Bhutan    
37890       India      37890
36756       Italy      36756
df['column1'] = df['column1'].fillna(df['column3'])

上面的代码将第3列的值映射到第1列,其中第1列为NaN,但如果两个值不同,我也希望将第3列的值映射到第1列。

检查更新

df['column1'].update(df['column3'])
你可以试试这个:

mask=((df.loc[:,“Column1”]=”)|(df.loc[:,“Column3”]!=”)&(
~df.loc[:,“Column3”].isna()
)
df.loc[mask,“Column1”]=df.loc[:,“Column3”]
打印(df)
#输出
第1栏第2栏第3栏
2227印度2227
35604英国35604
38956美国38956
迪拜
7528不丹
37890印度37890
36756意大利36756

df['column3'].fillna(df['column1'])
?@anky-上面的一行将值从第3列复制到第1列,但如果两个值不同或第1列值为空,我希望将值从第3列复制到第1列。在“df['column1'].update(df['column3'])”中的更新是什么,如果我们需要添加更多条件,如果第1列有值,第3列为NaN,则保持数据不变。正如问题中的预期输出所述。@Manz当更新值为NaN时,该值将不会更新,请检查熊猫官方文档~Sir,上面的脚本也会将NaN值从第3列复制到第1列,所需的是,如果第1列有值,而第3列为NaN,则保持原样。请参阅我的更新答案,并附加一个条件,以处理“Column3”中的NaN值。