当前位置: 首页 > 知识库问答 >
问题:

对除一列之外的所有列中缺少日期和向前填充值的行重新采样

商麒
2023-03-14

我目前有以下示例数据帧:

No  FlNo    DATE        Loc    Type
20  1826    6/1/2017    AAA    O
20  1112    6/4/2017    BBB    O
20  1234    6/6/2017    CCC    O
20  43      6/7/2017    DDD    O
20  1840    6/8/2017    EEE    O

我想在上下两行中填入缺少的日期。我还想用顶行中的值填充非日期列的值,但将“类型”列留空以填充行。

请查看所需输出:

No  FlNo    DATE        Loc    Type 
20  1826    6/1/2017    AAA    O
20  1826    6/2/2017    AAA
20  1826    6/3/2017    AAA
20  1112    6/4/2017    BBB    O
20  1112    6/5/2017    BBB
20  1234    6/6/2017    CCC    O
20  43      6/7/2017    DDD    O
20  1840    6/8/2017    EEE    O

我已经搜索了谷歌和stackoverflow,但没有找到任何日期填写熊猫数据框架的答案。

共有1个答案

韦叶秋
2023-03-14

首先,使用 DATE 转换为日期时间pd.to_datetime

df.DATE = pd.to_datetime(df.DATE)

选项1
使用重新采样ffill,然后稍后重置“类型”列。首先,在一些列表中存储唯一日期:

dates = df.DATE.unique()

现在,

df = df.set_index('DATE').resample('1D').ffill().reset_index()
df.Type = df.Type.where(df.DATE.isin(dates), '')
df

        DATE  No  FlNo  Loc Type
0 2017-06-01  20  1826  AAA    O
1 2017-06-02  20  1826  AAA     
2 2017-06-03  20  1826  AAA     
3 2017-06-04  20  1112  BBB    O
4 2017-06-05  20  1112  BBB     
5 2017-06-06  20  1234  CCC    O
6 2017-06-07  20    43  DDD    O
7 2017-06-08  20  1840  EEE    O

如果需要,您可以将< code>DATE恢复到其原始状态;

df.DATE = df.DATE.dt.strftime('%m/%d/%Y')

选项2
另一个选项将是asfreqffillfillna

df = df.set_index('DATE').asfreq('1D').reset_index()
c = df.columns.difference(['Type'])
df[c] = df[c].ffill()
df['Type'] = df['Type'].fillna('')
df
        DATE    No    FlNo  Loc Type
0 2017-06-01  20.0  1826.0  AAA    O
1 2017-06-02  20.0  1826.0  AAA     
2 2017-06-03  20.0  1826.0  AAA     
3 2017-06-04  20.0  1112.0  BBB    O
4 2017-06-05  20.0  1112.0  BBB     
5 2017-06-06  20.0  1234.0  CCC    O
6 2017-06-07  20.0    43.0  DDD    O
7 2017-06-08  20.0  1840.0  EEE    O
 类似资料:
  • 假设我有以下数据。 我想用以前的值填充缺少的日期(按字段“g”分组)。例如,我想在上面的示例中添加以下主菜: 我该怎么做呢?

  • 问题内容: 我有一个数据框架,如下所示 我想做的是在date列中找到最小和最大日期,并扩展该列使其具有所有日期,同时为该列填写。所以所需的输出是 问题答案: 初始数据框: 首先,将日期转换为日期时间: 然后,生成日期和唯一用户: 这将允许您创建一个MultiIndex: 您可以使用它来重新索引您的DataFrame: 然后可以按用户排序:

  • 我有一个数据框 我希望Col1中的唯一值与最新日期Col2一致。所需的列如下所示

  • 我有一个缺少“SNAP_ID”值的数据帧。我想根据前一个非缺失值(lag()?)的序列,用浮点值填充缺失值。如果可能的话,我真的想只用dplyr来实现这一点。 假设: 永远不会有丢失的数据,因为第一行或最后一行我根据数据集的最小值和最大值之间的缺失天数生成缺失的日期 数据集中可能存在多个空白 当前数据: 我想要实现的目标: 作为数据帧: 这是我实现这个目标的尝试,但它只适用于第一个缺失的值: 来自

  • 我一直在尝试在Excel中制作一个公式,用于填充两个日期之间的月份。 我得到的只是DatedIF(),但它不满足要求。 这是我想要从Excel公式中获得的图片。如果我更新开始日期或结束日期公式中的任何日期,将自动计算日期之间的所有月份,并在附加的图片中给出可用的结果。 代码结果和我想要的结果。代码应该相应地与日期一起工作。 https://docs . Google . com/spreadshe

  • 问题内容: 我想用一个枚举的所有可能值来填充列表 自从我最近爱上了,我就利用了 是否有更好的方法 (如在未混淆的衬管中)达到相同的结果? 问题答案: 我不会在一开始使用List,因为EnumSet更合适,但是您可以 要么