【问题标题】:Unable to create dataframe with pandas DateRange and multiple columns无法使用 pandas DateRange 和多列创建数据框
【发布时间】:2019-07-24 21:31:18
【问题描述】:

我正在按如下方式处理 df:

df = pd.DataFrame({'ID': {0: 'S0001', 1: 'S0002', 2: 'S0003'},
 'StartDate': {0: Timestamp('2018-01-01 00:00:00'),
  1: Timestamp('2019-01-01 00:00:00'),
  2: Timestamp('2019-04-01 00:00:00')},
 'EndDate': {0: Timestamp('2019-01-02 00:00:00'),
  1: Timestamp('2020-01-02 00:00:00'),
  2: Timestamp('2020-04-01 00:00:00')}
 'Color': {0: 'Blue', 1: 'Green', 2: 'Red'},
 'Type': {0: 'Small', 1: 'Mid', 2: 'Mid'}})

现在我想创建一个在开始日期和结束日期之间有 366 行的 df,并且我想为开始日期和结束日期之间的每一行添加颜色、类型、ID。

我正在做以下 whick 效果很好:

OutputDF = pd.concat([pd.DataFrame(data = Row['ID'], index = pd.date_range(Row['StartDate'], Row['EndDate'], freq='1D', closed = 'left'), columns = ['ID']) for index, Row in df.iterrows()])

我得到一个包含 2 列 SiteID 和天数在开始/结束日期范围内的 df。

我可以通过对“ID”执行 pd.merge 来添加颜色/类型,但我认为有一种直接的方法可以在创建 DF 时直接添加颜色和类型列。

我尝试过data = [Row['ID'], Row['Type'], Row['Color']]data = Row[['ID', 'Color', 'Type']],但都不起作用。

因此,我应该如何创建我的数据框但直接为整个 366 行的每个项目设置颜色而不需要合并?

电流输出示例:

每个项目的开始/结束日期之间的所有日子都持续。

期望的输出:

谢谢

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    尝试,pd.DataFrame 构造函数与数据字典:

     pd.concat([pd.DataFrame({'ID':Row['ID'], 
                              'Color':Row['Color'], 
                              'Type':Row['Type']}, 
                             index = pd.date_range(Row['StartDate'], 
                                                   Row['EndDate'], 
                                                   freq='1D', 
                                                   closed = 'left')) 
                for index, Row in df.iterrows()])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-13
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 2021-02-18
      • 1970-01-01
      • 2020-02-22
      相关资源
      最近更新 更多