Python:将条件列添加到pandas数据框,更多的pythonic解决方案?

时间:2019-02-01 18:08:56

标签: python pandas dataframe

我正在将一列添加到数据框中,其中的列值是通过比较数据框中的两个 other 列来确定的。添加该列的代码是:

lst = []
for x in range(len(df)):
    if df['ColumnA'][x] > df['ColumnB'][x]:
        lst.append(df['ColumnB'][x])
    else:
        lst.append(df['ColumnA'][x])

df['ColumnC'] = lst

我的问题是,有没有更有效/ Python的方法来做到这一点?过去曾建议我要警惕每次遍历数据帧的每一行,因此想看看我是否丢失了某些东西。谢谢!

3 个答案:

答案 0 :(得分:6)

是的,请尽量减少:

df['ColumnC'] = df[['ColumnA', 'ColumnB']].min(1)

答案 1 :(得分:2)

使用numpy.where

df['ColumnC'] = np.where(df['ColumnA'] > df['ColumnB'], df['ColumnB'], df['ColumnA'])

答案 2 :(得分:0)

比其他解决方案多一些的代码,但可以说更具通用性

mask = df[ColumnA] > df[ColumnB]
df[ColumnC] = pd.Series(index=df.index)
df[ColumnC].loc[mask] = df[ColumnA].loc[mask]
df[ColumnC].loc[~mask] = df[ColumnB].loc[~mask]