通过检查熊猫中指定的8种条件从输入字典生成df

丹麦文

我有一本字典,如下所示。

d1 = { 'start_date' : '2020-10-01T20:00:00.000Z',
       'end_date'  : '2020-10-05T20:00:00.000Z',
       'n_days'    : 6,
       'type'      : 'linear',
       "coef": [0.1,0.1,0.1,0.1,0.1,0.1] 
     }

d1:是用户输入的内容,用户可能输入了错误的开始日期,结束日期和n_days。

我们必须更换 end_date = start_date + n_days

可能存在start_dateend_daten_days不可用的情况。由指定的非可用性start_date = 0, end_date = 0, n_days = 0

然后我们将有8个条件

1. if (start_date != 0) and (end_date != 0) and (n_days != 0):
          end_date = start_date + n_days

2. if (start_date != 0) and (end_date != 0) and (n_days == 0):
          pass
    
3. if (start_date != 0) and (end_date == 0) and (n_days != 0):
          end_date = start_date + n_days

4. if (start_date != 0) and (end_date == 0) and (n_days == 0):
          print("Please enter required inputs")

5. if (start_date == 0) and (end_date != 0) and (n_days != 0):
          start_date = end_date - n_days

6. if (start_date == 0) and (end_date != 0) and (n_days == 0):
          print("Please enter required inputs")

7. if (start_date == 0) and (end_date == 0) and (n_days != 0):
          print("Please enter required inputs")

8. if (start_date == 0) and (end_date == 0) and (n_days == 0):
          print("Please enter required inputs")

我想通过检查d1并入上述所有条件。之后,我想根据上面处理的d1在df以下进行准备。

从上面,字典作为函数的输入,我想在df以下生成作为输出。

预期产量:

df:

Date                Day           function_type         function_value
2020-10-01          1             linear                (0.1*1)+0.1 = 0.2
2020-10-02          2             linear                (0.1*2)+0.1 = 0.3
2020-10-03          3             linear                (0.1*3)+0.1 = 0.4
2020-10-04          4             linear                (0.1*4)+0.1 = 0.5
2020-10-05          5             linear                (0.1*5)+0.1 = 0.6

注意:

类型可以是线性,常数,多项式和指数。

a0, a1, a2, a3, a4, a5 = d1['coef']

If constant, funtion_value = a0

If exponential funtion_value = e**(a0+a1T)

if polynomial
funtion_value = a0+a1T+a2(T**2)+a3(T**3)+a4(T**4)+a5(T**5)

T = value of Day column

@Shubham Sharma和@Let的尝试很好地回答了类似的问题,请尝试根据特定条件和输入字典生成数据-熊猫

非常感谢@Shubham Sharma和@让我们尝试

Shubham Sharma

延长我previous answerquestion,我们可以创建自定义validation机能的研究,是以输入参数由用户提供的字典,并返回一个两对tuple具有有效start_dateend_date以其他方式筹集的ValueError

def validate(d):
    n_days, start, end = d['n_days'], d['start_date'], d['end_date']

    if start == 0:
        if end != 0 and n_days != 0:
            end = pd.to_datetime(end)
            start = end - pd.Timedelta(days=n_days)
        else:
            raise ValueError('Invalid user input')
    else:
        start = pd.to_datetime(start)
        if end != 0 and n_days != 0:
            end = pd.to_datetime(end)
        elif end == 0 and n_days == 0:
            raise ValueError('Invalid user input')
        else:
            end = start + pd.Timedelta(days=n_days)

    return start.tz_localize(None).floor('D'),\
                 end.tz_localize(None).floor('D')

然后getDF从中修改函数,previous answer并包含try-except要捕获语句ValueError

def getDF(d):
    try:
        start, end = validate(d)
        date = pd.date_range(start, end, freq='D')
        days = (date - date[0]).days + 1
        return pd.DataFrame({'Date': date, 'Day': days, 'function_type': d['type'],
                            'function_value': funcValue(d, days)})
    except ValueError as err:
        print(err)

结果:

print(getDF(d1))

        Date  Day function_type  function_value
0 2020-10-01    1        linear             0.2
1 2020-10-02    2        linear             0.3
2 2020-10-03    3        linear             0.4
3 2020-10-04    4        linear             0.5
4 2020-10-05    5        linear             0.6

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据特定条件和输入字典生成数据框-熊猫

df.iterrow中的df.loc更改条件中指定的行之外的行

有没有一种方法可以在Python中指定条件类型提示?

从日期列和用户在熊猫中指定的输入参数计算特定功能

熊猫-从字典列表创建df

通过pyodbc在SQL查询中指定列条件会导致错误

如何通过传统映射在Hibernate 5中指定基于序列的生成值

在构造函数中指定熊猫索引名称

如何在熊猫中指定空格

循环检查条件(熊猫)

Kotlin:在界面中指定输入约束

Matlab:如何在matlabFunction中指定输入?

在TTTAttributedLabel中指定多个/条件链接颜色

是否可以在Count()中指定条件?

MySQL在字段中指定条件的结果

在cmake生成的项目中指定libstd

我想根据df2中指定的上限和下限,用另外一个条件来限制df1

输入元素如何检查字符串是否与pattern属性中指定的正则表达式匹配?

在Mandrill中指定“通过”或“代表”值

来自父级的Hibernate更新子级,未在生成的SQL查询条件中指定联接列

熊猫根据列表的字典创建df

将字典转换成熊猫DF

在SOLR 8中指定默认核心

有没有一种单线形式将字符串放入列表中的次数是字典中指定的次数?

通过遍历字典列表并基于熊猫中的特定日期条件来创建新列

通过以字典为输入来形成熊猫系列元素,其中值指示该字典中的键频率

查询按一种功能,多种条件分组的熊猫df并将其输出到列表中

在df.plot中指定bean的数量(kind ='hist')

在函数中指定文件名:df.to_json