根据特定条件生成带有填充的行-熊猫

丹麦文

我有一个df,如下所示

Date                   B_best         B_worst     W_best            W_worst
2020-08-11             3              1           10                7
2020-08-12             3              1           10                7
2020-08-13             3              1           10                7
2020-08-14             3              1           10                7
2020-08-15             6              1           10                7
2020-08-16             6              2           10                11
2020-08-17             6              2           5                 11
2020-08-18             6              2           5                 11
2020-08-19             9              2           5                 11
2020-08-20             9              2           4                 11
2020-08-21             9              2           4                 11   
2020-08-22             5              3           7                 13         
2020-08-23             10             6           8                 16 
2020-08-24             9              2           4                 11

上面的df有一个Date从上面调用的列,我想有一个函数的输入将在df之上,并且有一个日期值

df1 = generate_data(df, datetime.datetime(2020, 9, 2, 20, 0))

其中datetime.datetime(2020,9,2,20,0)表示2020-09-02

预期产量

df1:

Date                   B_best         B_worst     W_best            W_worst
2020-08-11             3              1           10                7
2020-08-12             3              1           10                7
2020-08-13             3              1           10                7
2020-08-14             3              1           10                7
2020-08-15             6              1           10                7
2020-08-16             6              2           10                11
2020-08-17             6              2           5                 11
2020-08-18             6              2           5                 11
2020-08-19             9              2           5                 11
2020-08-20             9              2           4                 11
2020-08-21             9              2           4                 11   
2020-08-22             5              3           7                 13         
2020-08-23             10             6           8                 16 
2020-08-24             9              2           4                 11
2020-08-25             9              2           4                 11
2020-08-26             9              2           4                 11
2020-08-27             9              2           4                 11
2020-08-28             9              2           4                 11
2020-08-29             9              2           4                 11
2020-08-30             9              2           4                 11
2020-08-31             9              2           4                 11
2020-09-01             9              2           4                 11
2020-09-02             9              2           4                 11

它以可用df的最后一行相同的值生成了直到2020-09-02的数据。

注意:

如果输入日期大于最大日期,则返回df1,否则返回df

ky

假设日期是连续的,并且输入日期将始终大于数据框中可用的最小日期,则可以使用min现有Date列中的来创建date_range系列,然后right合并并填充:

def generate_data(a,b):
    idx = pd.date_range(a['Date'].min(),b)
    return a.merge(pd.Series(idx,name='Date'),how='right').ffill().astype(a.dtypes)
print(generate_data(df, datetime.datetime(2020, 9, 2, 20, 0)))

EDIT1:如果输入日期小于最小日期,则要调整并返回原始df,您可以编辑以下功能:

def generate_data(a,b):
    idx = pd.date_range(a['Date'].min(),b)
    out = a.merge(pd.Series(idx,name='Date'),how='right').ffill().astype(a.dtypes)
    return a if b<a['Date'].min() else out

编辑2:

如果输入日期大于最大日期,则返回df1,否则返回df。

def generate_data(df, b):
    if df['Date'].max() <  b:
        idx = pd.date_range(df['Date'].min(),b)
        return df.merge(pd.Series(idx,name='Date'),how='right').ffill().astype(df.dtypes)
    else:
        return df

         Date  B_best  B_worst  W_best  W_worst
0  2020-08-11       3        1      10        7
1  2020-08-12       3        1      10        7
2  2020-08-13       3        1      10        7
3  2020-08-14       3        1      10        7
4  2020-08-15       6        1      10        7
5  2020-08-16       6        2      10       11
6  2020-08-17       6        2       5       11
7  2020-08-18       6        2       5       11
8  2020-08-19       9        2       5       11
9  2020-08-20       9        2       4       11
10 2020-08-21       9        2       4       11
11 2020-08-22       5        3       7       13
12 2020-08-23      10        6       8       16
13 2020-08-24       9        2       4       11
14 2020-08-25       9        2       4       11
15 2020-08-26       9        2       4       11
16 2020-08-27       9        2       4       11
17 2020-08-28       9        2       4       11
18 2020-08-29       9        2       4       11
19 2020-08-30       9        2       4       11
20 2020-08-31       9        2       4       11
21 2020-09-01       9        2       4       11
22 2020-09-02       9        2       4       11

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫根据特定条件选择数据

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

根据条件填充熊猫

在特定条件下填充熊猫数据框列

满足特定条件的熊猫数据框正向填充

如何根据熊猫中一系列列的特定条件选择行

如何根据特定条件在熊猫中删除数据框中的重复行

熊猫:根据特定条件创建新框架的最佳方法

创建基于特定条件的新行并遍历熊猫列表

在满足熊猫特定条件的地方更新行值

在满足特定条件的熊猫行之间进行简单的计算

Python //熊猫-仅选择给定列中具有特定条件的行

熊猫数据框比较具有特定条件的多行

熊猫:根据其他行中的条件填充行

如何根据列条目根据特定条件更改熊猫列数据?

根据条件在熊猫数据框行之间填充rmultiple流

熊猫-根据特定条件查找数据框中是否存在值

根据熊猫中的特定条件合并两个数据框

按年份分组和其他列,并根据特定条件的熊猫计算平均值

根据特定条件在熊猫的两个表中比较两列

根据多个列上的多个特定条件在熊猫中创建新列-Pandas

根据给定的熊猫特定条件从给定的日期创建year_category

如何根据特定条件在数据框熊猫中的列上添加一列

熊猫查找满足特定条件的每个组中的行的索引,并为这些行分配值

为根据熊猫条件选择的行添加特定值

根据条件从熊猫数据框中删除特定的行

根据递增的列条件向前填充熊猫

熊猫未根据条件填充列

当列值符合特定条件时,在熊猫数据框的行中提取2列数据