根据约束条件生成列数据

时间:2019-10-30 06:11:27

标签: python pandas numpy

我有一个包含2列date_1和date_2的csv。

Date_1  Date_2
01/09/2019  02/08/2019
01/09/2019  03/08/2019
02/09/2019  03/08/2019
01/09/2019  04/08/2019
02/09/2019  04/08/2019
03/09/2019  04/08/2019
02/09/2019  05/08/2019
03/09/2019  05/08/2019
04/09/2019  05/08/2019
01/09/2019  06/08/2019
02/09/2019  06/08/2019
03/09/2019  06/08/2019
04/09/2019  06/08/2019
05/09/2019  06/08/2019
02/09/2019  07/08/2019
03/09/2019  07/08/2019
04/09/2019  07/08/2019
05/09/2019  07/08/2019
06/09/2019  07/08/2019
02/09/2019  08/08/2019
03/09/2019  08/08/2019

我想生成一个新列value_1

    对于每个date_1(总计)value_1
  1. 不得超过5000。

  2. date_2value_1应该有增加的趋势,即汇总在date_2上,value_1应该每天都在增加,例如,对于date_2,总计value_1为1000,则对于下一个date_2,该值应大于1000。

数据框具有唯一的(date_1,date_2)元组。

编辑:

数据链接

https://drive.google.com/file/d/1xOlJfPNhGgclWyyQmdwzG-WRkU2fhEI4/view?usp=sharing

任何人都可以提供帮助。

1 个答案:

答案 0 :(得分:0)

我认为这不是您真正想要的,但是我在写它只是为了让您理解这完全可以满足您问题的要求,如果您有其他疑问,则必须添加以下示例您的期望:

df['value_1'] = np.arange(0, 5000 / max(df['date_1'].value_counts()), 5000 / len(df) / max(df['date_1'].value_counts()))

这将使您在value_1列中呈上升趋势,并且每个value_1的{​​{1}}之和保证不会超过5000。 顺便说一句:假设您的日期已排序(如您发布的样本数据一样),则趋势将不断增加。如果不是(或可能不是),请执行以下操作:

date_1

在创建df = df.sort_values(['date_1', 'date_2']) # or ['date_2', 'date_1'] if you prefer 列之前