下面是我当前的pandas数据帧:Balance before Salary Salary
Month
Jun-18 27.20 15300.0
Jul-18 88.20 15300.0
Aug-18 176.48 14783.0
Sep-18 48.48 16249.0
Oct-18 241.48 14448.0
Nov-18 49.48 15663.0
是否可以将上述数据帧转换为以下格式?
Month1 Month2 Month3 Month4 Month5 Month6
Balance before Salary 27.2 88.2 176.48 48.48 241.48 49.48
Salary 15300 15300 14783 16249 14448 15663
代码
df = pd.DataFrame(salary_List)
newdf = df.groupby('date').sum()
newdf = df.groupby(pd.Grouper(key='date', freq='1M')).sum()
newdf.index = newdf.index.strftime('%b-%y')
newdf.index.name = 'Month'
有人能帮我一下吗?
最佳答案
我认为您需要transposebyT然后在必要时更改列名并添加列表理解:
告示
一次就够了,不需要两次,因为聚合函数相同,这里是groupby+sum。df = pd.DataFrame(salary_List)
newdf = df.groupby(pd.Grouper(key='date', freq='1M')).sum().T
#python 3.6+
newdf.columns = [f'Month{x}' for x in range(1, len(newdf.columns) + 1)]
#python bellow
#newdf.columns = ['Month{}'.format(x) for x in range(1, len(newdf.columns) + 1)]
print (newdf)
Month1 Month2 Month3 Month4 Month5 \
Balance before Salary 27.2 88.2 176.48 48.48 241.48
Salary 15300.0 15300.0 14783.00 16249.00 14448.00
Month6
Balance before Salary 49.48
Salary 15663.00