我有一个Pandas的数据框,看起来像这样:
| 标头1|标题2|
| - ------|- ------|
| 第一次|行1|
| 第二次|行2|
| 第三次|行1|
| 第四次|行2|
| 第五次|行1|
我想创建一个字典列表,其中,对于在header 2列中具有匹配值的所有行(除了第一行),使用第一行的header 1列值作为londict键,每隔一行的header 1列值作为londict值,将字典添加到列表中。
预期产出:
[{“第一次”:“第三次},{“第二次”:“第四次”},{“第一次”:“第五次”}]
甚至
{“First”:“Third”,“Second”:“Fourth”}(此输出不处理标题2中的多个匹配项)
理想情况下,解决方案不会是计算密集型的,因为我已经能够用嵌套的for循环完成这一点。
根据评论中提出的内容进行编辑:如果第一列中有多个值与header 2匹配,则假定第一个出现的值将是关键字,并与值重复。例如:[{“First”:“Third},{“Second”:“Fourth”},{“First”:“Fifth”}]。换句话说,第一个匹配行中的header 1值将是重复关键字,并为每个后续匹配行的结果列表添加一个单条目字典。
谢谢
1条答案
按热度按时间wvyml7n51#
下面是一个解决问题的方法:
输出:
更新日期:
下面是一个稍微可靠的答案,假设
header1
列中的值可以在不同的header2
值之间复制,这个更新的答案将确保结果列表中的字典保持原始 Dataframe 中的顺序。样本输入:(注意
Fifth
的复制,对于键Second
,再次对于键First
):输出:(注意,对于以
Fifth
作为值的两个字典,以Second
作为键的字典出现在以First
作为键的字典 * 之前 *,这与原始 Dataframe 中的排序相同,因为遇到的第一个Fifth
具有与Second
匹配的header2
值):