python - 从字典中提取数据框
问题描述
我正在开发一个项目,该项目使用 python 脚本读取多个 .xls 文件,目标是让一个数据帧包含所有文件中的所有数据点。听起来很简单。
由于标题名称和标题的位置因文件而异(有些还有其他列),所以我的脚本将每个文件保存为字典中的数据框。这很好,因为它可以捕获每个文件中的所有数据点。可以使用 keys 函数调用每个数据帧。
我的项目将包含大约 1500 个要读入的 .xls 文件,但现在我只使用 5 个文件来使代码正常工作。
但是,问题是如何提取保存到字典中的每个数据帧并将其转换为单个视图。
前面提到的标头名称可能因字典中的每个数据帧而异,如下所示:
示例文件 1:
Security Type | Primary Source | Secondary Source | Pricing Logic | Valuation Point
示例文件 2:
Security Type | Primary Source | Secondary Source | Pricing Logic | Valuation Point
示例文件 3:
Security Type | Secondary Source | Primary Source | Pricing Logic
我如何遍历此字典以生成单个视图/数据框,知道标题可能位于不同的位置,并且有些标题可能比其他标题名称更多,但所有标题都同等重要且不能省略。
解决方案
试试下面的。下面你有两个 dummy dataframes
,都包括列A
和B
,以及第三个排他列(分别为X
and Y
),列顺序不一致。
假设您想要在最终视图中的列在cols
(A
并且B
在这种情况下) 中定义。
按照以下步骤 - 遍历字典并将结果保存在 final 中dff
,使用pd.concat
- 您可以实现您的要求。
dfs = {
'df1': pd.DataFrame({'A': ['1A'], 'B': ['1B'], 'X': ['X']}),
'df2': pd.DataFrame({'Y': ['Y'], 'A': ['2A'], 'B': ['2B']})
}
cols = ['A', 'B']
dff = pd.DataFrame()
for k in dfs.keys():
dff = pd.concat([dff, dfs[k][cols]]).reset_index(drop=True)
print(dff)
A B
0 1A 1B
1 2A 2B
推荐阅读
- tensorflow - 如何在 tensorflow 2.0 中训练卷积自动编码器?
- openstack - Openstack 无法从实例连接到 Internet 或从主机连接到实例
- mysql - mysql 更新命令示例两个表 - SPEED UP
- css - Angular Material 组件显示时没有填充
- python - 如何使用带有目标的硒选择框架?
- javascript - 在 ReactJS 中搜索部分字符串
- django - Django Bootstrap 折叠列表无法正常工作并展开所有项目
- javascript - Promise 已完成,但无法从中记录数据
- spring - 使用 @Query 返回 JpaRepository 中的字符串列表
- javascript - 有没有一种聪明的方法可以通过使用 JavaScript 的解构方法来修改对象中的数组?