Pandas:在dataframe中插入新列,并根据if-then-logi在新列中填充值

2024-09-29 01:25:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有两个国家描述的数据框。有时它们匹配,有时不匹配

Country Desc1        Country Desc2

1    US           US  
2    US           UK           
3    UK           US    
4    UK           UK

我需要1.)插入另一列(Country Desc3),其中所有行值都填充了2。)如果与Country Desc2匹配,则返回Country Desc1的规则。在


Tags: 数据规则国家countryusukdesc2desc1
3条回答

让我们使用ilocjoin

df['Country Desc3'] = df.apply(lambda x: x.iloc[0] if x.iloc[0] == x.iloc[1] else ', '.join(x),axis=1)

输出:

^{pr2}$

如果在新列中需要字符串,请尝试此操作

df['Country Desc3']=df.apply(lambda x: ','.join(x.unique().tolist()), axis=1)

如果您需要新列中的列表

^{pr2}$

以防万一您需要NaN来表示没有匹配的行

df['Country Desc3']=np.nan
df.loc[df['Country Desc1']==df['Country Desc2'],'Country Desc3']=df['Country Desc1']
df['Country Desc3'] = \
    df['Country Desc1'].mask(df['Country Desc1'] != df['Country Desc2'])

df

  Country Desc1 Country Desc2 Country Desc3
0            US            US            US
1            US            UK           NaN
2            UK            US           NaN
3            UK            UK            UK

相关问题 更多 >