python - 如何在熊猫中将数据对齐到数据框的顶部
问题描述
我需要自动化在数据框中移动数据的过程,以证明所有有价值的信息(即不是 NaN)到最顶层的空单元格。这里的问题是,在用户输入之前,我不知道我的输入是什么样子的。因此,我可能将 NaN 嵌入到数据上方、下方或数据集之间的任何位置。
我有的:
a b c d e f g h i j k l m o
0 0 0 0 0 0 0 NaN NaN NaN NaN NaN NaN NaN
1 1 1 1 1 1 1 NaN NaN NaN NaN NaN NaN NaN
0 0 0 1 0 0 1 NaN NaN NaN NaN NaN NaN NaN
0 0 1 0 1 0 0 NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN 1 1 0 1 0 0 1
期望的输出:
a b c d e f g h i j k l m o
0 0 0 0 0 0 0 1 1 0 1 0 0 1
1 1 1 1 1 1 1 NaN NaN NaN NaN NaN NaN NaN
0 0 0 1 0 0 1 NaN NaN NaN NaN NaN NaN NaN
0 0 1 0 1 0 0 NaN NaN NaN NaN NaN NaN NaN
我想要做的是有效地(即不是逐行)将第 4 行列h中的值移动到o到顶部。我能够使用以下代码行对其进行硬编码:
> df= df.set_index(['a', 'b', 'c', 'd', 'e', 'f','g']).shift(-4).iloc[0:5].reset_index()
> df= df.reindex(np.arange(4))
正如我上面所说的,硬编码的问题是,在用户输入数据之前,你不知道数据集是什么样子的。同样,此应用程序将是具有超过 100k 行数据的数据。
关于如何使转移过程自动化的任何建议?最好使用熊猫。
解决方案
推荐阅读
- javascript - onchange 只检测 div 的第一个复选框
- vue.js - Vue.Js 在组件之间画线问题
- c - 如何在 C 中编辑特定的二进制数据而不删除/覆盖整个文件?
- scala - 实例化 'org.apache.spark.sql.hive.HiveSessionState' 时出错:使用 spark session 读取 csv 文件时
- html - 如何从这一行生成工具栏?
- java - 创建 zip 文件而不写入磁盘
- build - 在执行“bitbake image_name”期间出现错误“检查程序 pkg-config:未找到”
- json - 用jq将过滤后的json转换成csv
- python - 带有熊猫数据框的滑块小部件
- office365 - 自定义函数批处理中的远程调用