如何使用python将值从column3映射到column1
我希望将第3列中的值映射到第1列。如果第1列中没有值,如果第3列也为空,则不会映射任何值 如果列1和列3都有不同的值,那么我们需要将值从列3映射到列1如何使用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
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值。