python - 删除 Pandas DataFrame 中的每 n 列
问题描述
我有一个 DataFrame,我想通过保留每 36 列并删除每 18 列来减少它;即:对于每 36 列,接下来的 18 列将被删除,然后从接下来的 36 列重复,直到 DataFrame 结束。
DataFrame 是 (11, 432) 但每 5 列(而不是 36 列)删除 2 列(而不是 18 列)的工作示例如下所示:
df = pd.DataFrame({'0':[1, 12, 13, 15, 10, 5, 6, 10, 21, 2, 3, 14, 8, 22, 12], '1':[11, 2, 43, 6, 12, 5, 6, 10, 22, 2, 3, 14, 4, 1, 5]}).T
df_reduced_example
0 1 2 3 4 7 8 9 10 11 14
0 1 12 13 15 10 10 21 2 3 14 12
1 11 2 43 6 12 10 22 2 3 14 5
到目前为止,我似乎只能获得每 37 列的每个起点:
df_reduced = df[df.columns[36::18]]
有没有办法通过所有 432 列获得我想要的减少输出?
解决方案
这是一种方法:
col_to_keep = 5
col_to_drop = 2
period = col_to_keep + col_to_drop
s = (np.arange(len(df.columns)) % period) < col_to_keep
df.loc[:,s]
输出:
0 1 2 3 4 7 8 9 10 11 14
0 1 12 13 15 10 10 21 2 3 14 12
1 11 2 43 6 12 10 22 2 3 14 5
推荐阅读
- python - 在特定索引处连接两个多维 numpy 数组
- html - A帧多重动画
- apache-spark-sql - TypeError:不支持的类型转换为箭头:ArrayType
- sublimetext3 - 运行崇高的命令
- go - Google 访问令牌在云功能中不起作用
- javascript - 解析来自 MondoDB Atlas 的数据
- flutter - 动态地将维度添加到布尔数组
- azure - 带有加密的 Cosmos DB 的 ARM 模板中的循环依赖问题
- excel - ActiveX 组合框 VBA 内的参考值
- c++ - 当数组是 STL 容器类型时,将每个索引分配给 nullptr 的适当语法是什么