如何在多索引列中按月份具体分组,即日期时间索引。

问题描述 投票:0回答:1
  • 数据框显示的是日期与进出口量,并进一步细分为一个月内每天的沿海和区域数据。
  • 希望 要实现的是俱乐部,即所有数据的总和,在这种情况下,这是一个月,在最后,它将只显示一个条目,将是月末日期和 添加 所有相应的字段。

这就是下面的代码。

df=pd.read_csv('output.csv',
             encoding="utf-8",skipinitialspace=True,engine='python')
datadf = df

datadf = datadf.dropna(axis = 0, how ='any')  

datadf = datadf.astype({'ForeignType' : 'category','ImportType' : 'category','ArrDate' : 'datetime64',
                        'DepDate' : 'datetime64'})

# datadf = datadf.groupby(datadf['ArrDate'].dt.strftime('%B'))['ComoQty'].sum()
datadf1 = datadf.groupby(['ArrDate','ImportType','ForeignType'])['ComoQty'].sum()
datadf2 = datadf1.to_frame()
datadf2.fillna(value=0,inplace=True)
# datadf2 = datadf2.reset_index('ImportType')
# datadf2 = datadf2.reset_index('ForeignType')
# datadf2 = datadf2.reset_index('ArrDate')
datadf2

Output by running the above code

python pandas pandas-groupby
1个回答
0
投票
datadf1 = datadf.drop(columns='Unnamed: 0')
prac = datadf1
prac =prac.set_index('ArrDate')
prac_dates = prac.copy()

prac = prac.resample('D').apply({'ShipName':'count','ComoQty':'sum'}).reset_index()

prac_dates = ((prac_dates.resample('M').apply({'ComoQty':'sum'}))/1000).reset_index()
prac_dates['Month'] = pd.DatetimeIndex(prac_dates['ArrDate']).strftime('%B')
del prac_dates['ArrDate']
# prac_dates

prac['Month'] = pd.DatetimeIndex(prac['ArrDate']).strftime('%B')
# prac['Month'] = pd.to_datetime(prac['Month'], format='%B')
prac['ArrDate'] = pd.DatetimeIndex(prac['ArrDate']).strftime('%d')
© www.soinside.com 2019 - 2024. All rights reserved.