根据其他列裁剪数据框-Python

时间:2019-06-12 03:06:51

标签: python pandas dataframe

假设我具有以下数据集

data = {
  'date': ['1/1/2019', '1/2/2019', '1/3/2019', '1/4/2019', '1/1/2019', '1/2/2019', '1/3/2019', '1/4/2019'],
  'account_id': [1, 1, 1, 1, 2, 2, 2, 2],
  'value_1': [1, 2, 3, 4, 5, 6, 7, 8],
  'value_2': [1, 3, 6, 9, 10, 12, 14, 16],
    'value_1.1': [5, 5, 5, 5, 5, 5, 5, 5],
  'value_2.1': [0, 0, 0, 0, 0, 0, 0, 0]
}
df = pd.DataFrame(data,index = data['date']).drop('date', 1)
df

我如何根据以下逻辑来裁剪value_1和value_2列:

-对于value_1,上限= value_1.1,下限=无

-对于value_2,上限=无,下限= value_2.1?

我当时正在考虑使用……

np.where conditions, like np.where(df['value_1']>=value_1.2, value_1, df['value_1'])

np.where(df['value_2']<=value_2.1, 0, df['value_2'])

这有意义吗?

2 个答案:

答案 0 :(得分:1)

由于您已经在df中确定了边界的边界,所以我会这样做

df['value_1']=df.filter(like='value_1').min(1)
df['value_2']=df.filter(like='value_2').max(1)

答案 1 :(得分:0)

您可能要使用pd.DataFrame.clip

df['value1'] = df['value_1'].clip(upper=df['value_1.1'])
df['value2'] = df['value_2'].clip(lower=df['value_2.1'])
相关问题