在其他情况下从数据框中的现有列获取值的情况

时间:2019-05-16 09:36:01

标签: python pandas dataframe

我有一个具有这种结构的数据框:

df

我要:
IF Year >= 2010 then 2010 ELSE Year(2010年以下为原始值)。

使用此代码,它适用于2010年及以后的值,但仅从原始值中插入2003年(第一行)。

def case_when(row):
    if (row['Year'] >= 2010) : return 2010 
    else:
        return df_year['Year']

df_year['Year'] = df_year.apply(case_when, axis=1)

2 个答案:

答案 0 :(得分:0)

这可能有效:

df['Year'] = [min(x, 2010) for x in df['Year']]

答案 1 :(得分:0)

当numpy中的np.where使用矢量化方式时,您不应使用apply:

import numpy as np
...
df_year['Year'] = np.where(df_year['Year'] >= 2010, 2010, df_year['Year'])