比较和替换两个熊猫数据框列

时间:2020-05-13 11:14:31

标签: python pandas

我有一个包含2列的数据框,所有值都是字符串。

我想比较列,如果第二列字符串比第一列长,则将第一列替换为第二列值。

例如,如果df.iloc[0,0] = 'apple'df.iloc[0,1] = 'banana',则df.iloc[0,0]将被替换为'banana'

我将不胜感激。 =]

1 个答案:

答案 0 :(得分:2)

Series.str.len进行比较,并在numpy.whereDataFrame.iloc中设置值以按位置选择:

df = pd.DataFrame({'a':['apple','orange'], 'b':['banana','pear']})
print (df)
        a       b
0   apple  banana
1  orange    pear

mask = df.iloc[:,0].str.len() > df.iloc[:,1].str.len()
df.iloc[:,0] = np.where(mask, df.iloc[:,0], df.iloc[:,1])
#alternative
#df.iloc[~mask.to_numpy(),0] = df.iloc[:,1]
print (df)
        a       b
0  banana  banana
1  orange    pear

如果可能,请使用列标签:

mask = df['a'].str.len() > df['b'].str.len()
df['a'] = np.where(mask, df['a'], df['b'])
#alternative
#df.loc[~mask, 'a'] = df['b']