我有一个包含AXLES
列的数据框。 AXLES
列始终包含以下值之一:[3, 4, 5, ,6 ,7, 8]
。我运行一个过滤器,然后更改索引,然后分组,然后重新采样,最后取消堆栈数据帧,如下面的代码所示。
resamp = df[(df.GVW > 100) & (df.AXLES.isin([3,4,5,6,7,8]))].set_index('TIMESTAMP').groupby('AXLES').resample('M', how='count').CLASS
dfTemp = resamp.unstack(0)
dfTemp.index = [ts.strftime('%b 20%y') for ts in dfTemp.index]
这给了我以下数据框,没问题。
AXLES 4 5 6 7 8
Jul 2016 191 1582 212 183 6
但是,问题在于:由于我应用了dfWIM.GVW > 100
过滤,所有AXLES
= 3的行都会被过滤掉。我怎样才能在最终的数据框中保留这个删除的列?我正在尝试获取最终数据框如下(缺少" 3"列" 0"值添加到数据帧):
AXLES 3 4 5 6 7 8
Jul 2016 0 191 1582 212 183 6
如果在完成所有过滤后无法保留已删除的列,如何将值{0的任何[3, 4, 5, 6, 7, 8]
列(如果缺少)添加到最终数据帧?
非常感谢!
答案 0 :(得分:0)
这只是你问题最后一部分的答案,而不是一个完整的答案:
pythonically找到缺少的列:
missing = list(set([3,4,5,6,7,8]) - set(df.columns.tolist()))
选项1(python):
for x in missing: df[x] = 0
选项2(熊猫):
df = df.append(pd.DataFrame(columns = [missing])).fillna(0)