代码之家  ›  专栏  ›  技术社区  ›  ps0604

当数据帧包含日期字段时,Dask map_分区失败

  •  1
  • ps0604  · 技术社区  · 4 年前

    date2 没有 month 归因于 类型是 Series

    错误是 AttributeError: 'Series' object has no attribute 'month'

    import pandas as pd
    import dask
    import dask.dataframe as dd
    import datetime
    
    pdf = pd.DataFrame({
        'id2': [1, 1, 1, 2, 2],
        'balance': [150, 140, 130, 280, 260],
        'date2' : [datetime.datetime(2021,3,1), datetime.datetime(2021,4,1), 
                   datetime.datetime(2021,5,1), datetime.datetime(2021,1,1), 
                   datetime.datetime(2021,2,1)]
    })
    
    ddf = dd.from_pandas(pdf, npartitions=1) 
    
    def func2(df):
        return df.date2.month
    
    x = ddf.map_partitions(func2)  # <-- fails here
    
    1 回复  |  直到 4 年前
        1
  •  1
  •   SultanOrazbayev    4 年前

    访问 datetime .dt accessor ,因此,本例中的修复是:

    def func2(df):
        return df.date2.dt.month
    

    def func2(df):
        df['modified_column'] = df.date2.dt.month
        return df