【发布时间】:2018-10-10 03:52:18
【问题描述】:
我有两个要在 pandas 中比较的数据框,一个太大而无法放入内存,另一个较小但确实适合内存。
dfSmall:
cat1 cat2
foo bar
foo tiger
foo spam
bar spam
(5000 rows)
dfLarge:
cat1 cat2 cat3
foo dog green
foo tiger blue
foo snake green
foo bird pink
bar dog orange
...
(>1 million rows)
我使用了 dask.dataframe (dd.merge),但它需要很长时间和大量的摆弄,而且它似乎效率低下,因为我的一个 df 将适合内存。我还使用了带有设置块大小的 pandas.read_table,但仅用于修改文件本身,而不是将其与另一个文件进行比较。
额外的复杂性是我希望输出文件只保留与 两个 列匹配的行 - cat1 和 cat2。在上面的示例中,输出将只是一行 - foo cat,因为这是唯一两列都匹配的行。如果无法匹配两列,我不介意只能匹配一列的解决方案,我只需要修改数据框以将 cat1/cat2 合并为一列。
dfOutput:
cat1 cat2 cat3
foo tiger blue
【问题讨论】:
-
在上面的例子中,输出是
foo tiger(不是foo cat),不是吗?
标签: pandas dataframe large-data