Pandas在重采样和uns后添加列

2024-04-24 08:00:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含AXLES列的数据帧。AXLES列始终具有以下值之一:[3, 4, 5, ,6 ,7, 8]。我运行一个过滤器,然后更改索引,然后groupby,然后重新采样,最后取消对数据帧的堆栈,如下面的代码所示。在

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]

这给了我下面的数据帧,没问题。在

^{pr2}$

但是,这里有一个问题:由于我应用了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]列(如果缺少)添加到最终数据帧中?在

非常感谢!在


Tags: 数据代码过滤器dfindex堆栈timestampgroupby
1条回答
网友
1楼 · 发布于 2024-04-24 08:00:16

这只是对你问题最后一部分的回答,不是完整的答案:

pythonical找到丢失的列:

missing = list(set([3,4,5,6,7,8]) - set(df.columns.tolist()))

选项1(python):

^{pr2}$

方案2(熊猫):

df = df.append(pd.DataFrame(columns = [missing])).fillna(0)

相关问题 更多 >