Python Pandas divide创建额外的列和NaN

Python Pandas divide创建额外的列和NaN,python,pandas,Python,Pandas,我试图计算一个累积和,然后将该累积和的每一列除以另一个数据帧列。请参阅下面的代码 import pandas as pd import numpy as np def cum_sums(input_df): bin_values = np.arange(0, 72, 24) group_names = np.arange(0, 48, 24) input_df['categories'] = pd.cut(input_df['time'], bin_values,

我试图计算一个累积和,然后将该累积和的每一列除以另一个数据帧列。请参阅下面的代码

import pandas as pd
import numpy as np


def cum_sums(input_df):

    bin_values = np.arange(0, 72, 24)
    group_names = np.arange(0, 48, 24)

    input_df['categories'] = pd.cut(input_df['time'], bin_values, labels=group_names)
    category_sum = input_df.groupby(['area', 'categories'])['categories'].size()
    cum_sum = category_sum.groupby(level=[0]).cumsum().reset_index(name='cum_sum')
    # pivot to get right format
    cum_sum_flipped = cum_sum.pivot(index='area', columns='categories', values='cum_sum')
    # and then add back in any missing categories
    cum_sum_flipped = cum_sum_flipped.reindex(columns=group_names).ffill(axis=1).replace('Nan', 0, regex=True)

    return cum_sum_flipped

data1 = {'area': ['a', 'b', 'c', 'a', 'b'],
         'time': [7, 11, 25, 27, 34]}
data2 = {'area': ['a', 'b', 'c'],
         "count": [2, 2, 3]}


df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

df = cum_sums(df1)
print(df)
print(df2['count'])

df = df.div(df2['count'], axis='columns')

print(df)
这将产生:

       0   1   2   24
area                 
a     0.5 NaN NaN NaN
b     0.5 NaN NaN NaN
c     0.0 NaN NaN NaN
我希望:

       0  24
area                 
a     0.5 1.0 
b     0.5 1.0
c     0.0 0.33333

我怀疑通过添加缺少的类别,我正在改变div的工作方式,但这只是猜测。如果
df2
的长度与
df1
的长度相同,并且最后一次更改
axis='index'
,您可以通过
df1
的索引设置
df2
的索引:

df2.index = df.index
df = df.div(df2['count'], axis='index')
print(df)
categories   0         24
area                     
a           0.5  1.000000
b           0.5  1.000000
c           0.0  0.333333