Python numpy recfunctions通过bug连接\u

Python numpy recfunctions通过bug连接\u,python,numpy,outer-join,recarray,Python,Numpy,Outer Join,Recarray,在对多个键执行外部联接时,numpy.lib.recfunctions中的join_by函数似乎存在问题。matplotlib.mlab函数工作正常。recfunctions版本似乎混合/匹配了一些键(我有两个键:001258和001670,除了001258和001670之外,recfunctions还生成了001270和001658键)。有人碰到过这个问题吗 我有两个文本文件test.csv和test2.csv,其中包含以下内容: test.csv: gvkey,fyr,ogpoilq,dat

在对多个键执行外部联接时,numpy.lib.recfunctions中的join_by函数似乎存在问题。matplotlib.mlab函数工作正常。recfunctions版本似乎混合/匹配了一些键(我有两个键:001258和001670,除了001258和001670之外,recfunctions还生成了001270和001658键)。有人碰到过这个问题吗

我有两个文本文件test.csv和test2.csv,其中包含以下内容: test.csv:

gvkey,fyr,ogpoilq,datadate,cusip  
001258,12,,03/31/2002,13916P209  
001258,12,,06/30/2002,13916P209  
001258,12,,09/30/2002,13916P209  
001258,12,31.0000,12/31/2002,13916P209  
001678,12,74968.0000,12/31/2003,037411105  
001678,12,,03/31/2004,037411105  
001678,12,,06/30/2004,037411105  
001678,12,,09/30/2004,037411105  
001678,12,84736.0000,12/31/2004,037411105  
001678,12,,03/31/2005,037411105  
001678,12,,06/30/2005,037411105  
001678,12,,09/30/2005,037411105  
001678,12,85434.0000,12/31/2005,037411105  
001678,12,,03/31/2006,037411105  
001678,12,,06/30/2006,037411105  
001678,12,,09/30/2006,037411105  
001678,12,81971.0000,12/31/2006,037411105  
test2.csv:

gvkey,datadate,fyearq,fqtr,ciderglq,cisecglq    
001258,12/31/2001,2001,4,,  
001258,03/31/2002,2002,1,,  
001258,06/30/2002,2002,2,,  
001258,09/30/2002,2002,3,,  
001258,12/31/2002,2002,4,,  
001258,03/31/2003,2003,1,,  
001258,06/30/2003,2003,2,,  
001678,03/31/2004,2004,1,,  
001678,06/30/2004,2004,2,,  
001678,09/30/2004,2004,3,,  
001678,12/31/2004,2004,4,,  
001678,03/31/2005,2005,1,-136.9970,0.0000  
001678,06/30/2005,2005,2,-7.8000,0.0000  
001678,09/30/2005,2005,3,-164.6470,0.0000  
001678,12/31/2005,2005,4,73.3180,0.0000  
001678,03/31/2006,2006,1,71.6100,0.0000  
001678,06/30/2006,2006,2,5.5850,0.0000  
以下代码生成正确和不正确的合并表:

import datetime
import numpy as np
import numpy.lib.recfunctions as rf
import matplotlib.mlab as ml
date_converter = lambda x: datetime.date(int(x[-4:]), int(x[:2]), int(x[3:5]))
prod_df = np.genfromtxt("../data/test.csv", filling_values=np.nan, converters={3:date_converter}, dtype="S10, f8, O4", names="gvkey, prod, date", delimiter=",", usecols=(0,2,3), skip_header=1)        
hedge_df = np.genfromtxt("../data/test2.csv", filling_values=np.nan, converters={1:date_converter}, dtype="S10, O4, f8", names="gvkey, date, hedgepnl", delimiter=",", usecols=(0,1,4), skip_header=1)

correct_outer_merge = ml.rec_join(["gvkey", "date"], prod_df, hedge_df, "outer")
incorrect_outer_merge = rf.rec_join(["gvkey", "date"], prod_df, hedge_df, "outer")

也许你可以展示一些重现问题的代码?亚历克斯:请编辑你的答案并将代码包含在那里。编辑时会有一个用于设置代码格式的按钮。在此之后,您可以删除您的评论。@Alex-我无法重现您的问题。。。您使用的是什么版本的python和numpy?此外,stackoverflow是一个报告bug的糟糕地方。询问其他人是否有类似的问题(这就是你正在做的),这没有什么错,但在大多数情况下,numpy开发者不太可能检查stackoverflow。如果您确实想报告一个bug,那么应该使用numpy/scipy bug跟踪器:这是一个很好的、自包含的示例@亚历克斯-虽然我没有重现你的确切问题,但我对
numpy.lib.refunctions
版本中的一些datetimes和
nan
有些奇怪,不管它值多少钱…@Joe,抱歉,我还没有意识到礼仪,只是开始摆弄Python。事实上,函数似乎调试得不好。我会在你提到的URL上报告潜在的bug。对其他人:如果我误用了join_by,请让我知道,这样我就不会将其报告为bug。谢谢也许你可以展示一些重现问题的代码?亚历克斯:请编辑你的答案并将代码包含在那里。编辑时会有一个用于设置代码格式的按钮。在此之后,您可以删除您的评论。@Alex-我无法重现您的问题。。。您使用的是什么版本的python和numpy?此外,stackoverflow是一个报告bug的糟糕地方。询问其他人是否有类似的问题(这就是你正在做的),这没有什么错,但在大多数情况下,numpy开发者不太可能检查stackoverflow。如果您确实想报告一个bug,那么应该使用numpy/scipy bug跟踪器:这是一个很好的、自包含的示例@亚历克斯-虽然我没有重现你的确切问题,但我对
numpy.lib.refunctions
版本中的一些datetimes和
nan
有些奇怪,不管它值多少钱…@Joe,抱歉,我还没有意识到礼仪,只是开始摆弄Python。事实上,函数似乎调试得不好。我会在你提到的URL上报告潜在的bug。对其他人:如果我误用了join_by,请让我知道,这样我就不会将其报告为bug。谢谢