pandas / python中的最佳数据库查找和更新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas / python中的最佳数据库查找和更新相关的知识,希望对你有一定的参考价值。

理论数据库/编码查询在这里 - Python / Pandas数据帧相关。我在表中处理多达5万行,因此最佳解决方案似乎......最佳,最佳。我也不是编码专家,所以,请耐心等待。

我有一个包含唯一子代码/国家/地区对行的表,其中一些具有匹配的父代码.Eg:

Index | Parent | Child | Country | NewValue
0     |  A     |  A-1  |  X      | Null
1     |  A     |  A-1  |  Y      | Null 
2     |  A     |  A-2  |  X      | Null
3     |  B     |  B-1  |  X      | Null
4     |  B     |  B-2  |  Y      | Null

我需要使用计算的唯一值(NewValue)更新每个父/国家/地区对。查找和更新每一对的最佳方法是什么?

到目前为止,我正在生成一个独立的父/国家对的单独列表(以避免不必要地为每一行计算NewValue;我只是通过此列表迭代为每对生成NewValue),例如:

Parent | Country
A      |  X
A      |  Y
B      |  X
B      |  Y

现在,为每个给定的父/国家匹配简单地在第一个表中进行查找,获取任何匹配行的行索引,然后通过行索引更新是否更好?

或者,以包含任何相关索引的方式生成第二个表,并使用它们来更新第一个表?例如:

Parent | Country | Index(s)
A      | X       | 0,2
A      | Y       | 1
B      | X       | 3
B      | Y       | 4

如果2,怎么样?因为我正在使用df.unique()来生成第二个表,所以我每对只得到一个索引,而不是任何mathing索引(如果我这样做,我不确定它们是如何显示的)。而且我不确定这两种方式是否特别好,但它是我一天中提出的最佳方式:o)

谢谢,

克里斯托弗/ pepsi_max2k

答案

你可能想看看merge函数。

你需要做的就是

df_children.merge(df_parent, on=["Parent","Country"])

其中df_children是你的表[Index |家长|孩子|国家]列和df_parent有[Parent |国家|的NewValue]

以上是关于pandas / python中的最佳数据库查找和更新的主要内容,如果未能解决你的问题,请参考以下文章

python 使用datetime列查找pandas数据帧中的时间漏洞

Python根据pandas中的时间戳查找多个值

Python pandas:查找两列的余弦相似度

Python Pandas - 查找两个数据帧之间的差异

Pandas - 在 DataFrame 中的任何位置查找值索引

Python Pandas 和 SciPy:识别点和计算移动向量的最佳方法