【问题标题】:segregate data and save according to date in a column in cumulative way以累积方式隔离数据并根据日期保存在列中
【发布时间】:2021-07-22 13:19:23
【问题描述】:

我有一个大的 csv 文件,其中包含根据日期的数据,我想创建一个 cumcount 类型的文件。例如:

name    date
abc     01/01/2020
xyz     01/04/2020
dcd     01/04/2020
ddd     01/05/2020
fff     01/06/2020
ggg     01/12/2020

我想创建里程碑文件并保存它们,就像第一个文件将包含只有 01/01/2020 日期的数据并保存它,第二个文件应该包含数据 01/01/2020 和 01/04/2020 并保存, ,第三个文件应该是 2020 年 1 月 1 日、2020 年 1 月 4 日和 2020 年 1 月 5 日,依此类推.. 真实数据很大,所以会引起一些问题.. 有人知道吗.. 提前致谢

【问题讨论】:

    标签: python pandas dataframe date


    【解决方案1】:

    您可以使用 pandas 的 cumcount 功能。链接上提供了示例用法。

    df = pd.DataFrame([['a'], ['a'], ['a'], ['b'], ['b'], ['a']],
                      columns=['A'])
    
    df.groupby('A').cumcount(ascending=True)
    

    替代解决方案是这样的;

    df['new'] = df.groupby('name').date.apply(lambda x: x.shift().cumsum())
    

    我强烈建议将日期解析为不同的列。然后你应该添加.astype(int) 并注意NaN 值。

    cumcount in pandas

    【讨论】:

      【解决方案2】:

      首先确保您的date 列是日期时间类型。然后按升序获取所有可能的日期。最后增加日期窗口,将日期窗口中的date列值导出为csv。

      df['date'] = pd.to_datetime(df['date'])
      
      dates = df['date'].sort_values().unique()
      
      for i in range(1, len(dates)):
          df_ = df[df['date'].isin(dates[:i])]
          df_.to_csv(f'file{i}.csv', index=False)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-17
        • 2021-07-13
        • 1970-01-01
        • 1970-01-01
        • 2013-10-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多