python-3.x - Pandas:使用所需列顺序的列名数组,选择那些存在的,NULL那些不存在的
问题描述
我有一个列名数组,我想按该顺序作为输出表,例如
["A", "B", "C"]
我有一个输入表,它通常包含数组中的所有值,但并非总是包含(原始数据是 JSON API 响应)。
我想从输入表中选择所有可用的列,如果列不存在,我希望它用 NULL 或 NA 或其他填充,这并不重要。
假设我的输入 DataFrame(调用它input_table
)如下所示:
+-----+--------------+
| A | C |
+-----+--------------+
| 123 | test |
| 456 | another_test |
+-----+--------------+
我想要一个输出数据框,其中包含A, B, C
按该顺序生成的列
+-----+------+--------------+
| A | B | C |
+-----+------+--------------+
| 123 | NULL | test |
| 456 | NULL | another_test |
+-----+------+--------------+
- 当我这样做时,我得到一个 keyerror
input_table[["A","B","C"]]
- 当我这样做时,我得到了一个 NoneType 返回
input_table.get(["A","B","C"])
我能够通过以下方式实现我想要的:
for i in desired_columns_array:
if i not in input_dataframe:
ouput_dataframe[i] = ""
else:
output_dataframe[i] = input_dataframe[i]
但我想知道是否有一些不那么冗长的东西?
当输入数据框中的一列或多列可能不存在时,如何获得所需的输出模式以匹配输入数组?
解决方案
DataFrame.reindex
在列轴上:
cols = ['A', 'B', 'C']
df.reindex(cols, axis='columns')
A B C
0 123 NaN test
1 456 NaN another_test
推荐阅读
- datepicker - 仅在 jqgrid 中错误显示日期选择器 bootstrap4
- go - 如何使用反射包操作结构中的地图字段?
- android - Cordova 应用程序无法在首次运行时发出 CORS 请求
- apache - 如何在我的数据中心本地安装我的 laravel 项目( VirtualMachine -> debian ->apache )
- r - 对值进行操作时如何忽略空单元格或 NA
- highcharts - 如果未选中,如何在 Highchart 时间轴中淡化标签?
- python - 恢复 sublime-text 默认状态栏
- java - 当文本的方向不正确时,PdfBox 会删除空格
- powershell - 如何突出显示隐藏文件夹中的特定文件?
- vuejs2 - 是否可以像使用 vue-loader 一样将深度/子 css 选择器与包裹一起使用?