使用pandas分组并自动填充数据

Using pandas to groupby and automatically fill data

我有以下使用 pandas 的数据框:

具有 nan 的 header 列元素应该说最后一个词 founded。因此,列 header 应该是:

nan Ciclo 室内 Ciclo 室内 Ciclo 室内 Ciclo 室内 Body 泵 Body 泵 ....

在此之后,我想按运动分组(室内自行车等...)。

可以先用Series.fillna with method='ffill' (.ffill), but it does not work with Index, so need Index.to_series

cols = [np.nan, 'Ciclo Indoor', np.nan, np.nan, 'Body Pump', np.nan, np.nan]
df = pd.DataFrame([[1,0,1,2,1,0,1]], columns = cols)
print (df)

   NaN  Ciclo Indoor  NaN  NaN  Body Pump  NaN  NaN
0    1             0    1    2          1    0    1

df.columns = df.columns.to_series().ffill()
print (df)
   NaN  Ciclo Indoor  Ciclo Indoor  Ciclo Indoor  Body Pump  Body Pump  \
0    1             0             1             2          1          0   

   Body Pump  
0          1  

最后 groupby 按列名 axis=1level=0 并汇总 summean...

df1 = df.groupby(axis=1, level=0).sum()
print (df1)
   Body Pump  Ciclo Indoor
0          2             3