2016-07-30 98 views
-1

这里是我的代码片段:在多个CSV匹配的数据有效的方法,文件

for i,r1 in enumerate(Solution.values): 
    h1=ProjectedRevenue.index[i] 
    District_ID,Instrument_ID,Buy_or_not,Revenue=r1 
    listSol=[] 
    listSol.append(h1) 
    listSol.append(list(r1)[0]) 
    listSol.append(list(r1)[1]) 
    for j,r2 in enumerate(ProjectedRevenue.values): 
     h2=ProjectedRevenue.index[j] 
     if h2 == listSol[0]: 
      District_ID,Instrument_ID,Annual_Projected_Revenue= r2 
      listPR=list(r2) 
      if listSol[1] == listPR[1] & listSol[2] == listPR[2]: 
       if(listPR[2]>0): 
        #do stuff 
        continue 
       else: 
        #do stuff 
        continue 

我需要此代码一些帮助。我是python的新手,我必须搜索和比较来自多个.csv文件的数据条目。我看过itertuples,但无法识别该功能。所以我只是通过熊猫来搜索和执行操作,但是它的复杂度为$ O(n^2)$,速度很慢。有关于此的任何帮助?

编辑:所以我在代码中使用熊猫和numpy来操纵数据。为了使它更清楚,我需要进行搜索,以便两个不同文件中相同索引颜色的元素相同。考虑下面的例子:

Solution.csv:

Hospital_ID,District_ID,Instrument_ID 
1,4,6 
2,5,4 
7,8,5 

ProjectedRevenue.csv:

Hospital_ID,District_ID,Instrument_ID 
9,3,5 
7,8,5 
1,2,6 

所以这里的公共入口是两个files.I 7,8,5希望知道搜索和匹配它们的最快方法。

UPDATE:上一个问题是关于解决的语法错误。

+0

我知道以前的错误是愚蠢的。你可以请你删除你的downvote?这不会吸引高质量的答案。 – Rohinb97

+0

您可以发布样本CSV和期望/预期数据集/ CSV吗? – MaxU

+0

是[that](http://stackoverflow.com/a/38675126/5741205)你想要什么? – MaxU

回答

1

尝试这种量化的大熊猫方法:

In [22]: fn1 = r'D:\temp\.data\38673647\Solution.csv' 

In [23]: fn2 = r'D:\temp\.data\38673647\ProjectedRevenue.csv' 

In [24]: df1 = pd.read_csv(fn1) 

In [25]: df2 = pd.read_csv(fn2) 

In [26]: df1 
Out[26]: 
    Hospital_ID District_ID Instrument_ID 
0   1   4    6 
1   2   5    4 
2   7   8    5 

In [27]: df2 
Out[27]: 
    Hospital_ID District_ID Instrument_ID 
0   9   3    5 
1   7   8    5 
2   1   2    6 

In [28]: pd.merge(df1, df2, on=df1.columns.tolist()) 
Out[28]: 
    Hospital_ID District_ID Instrument_ID 
0   7   8    5 
+0

我会试试这个。在我接受你之前,我会等待其他答案。 – Rohinb97

+0

我已经尝试过这种方法,但它似乎很慢。 – Rohinb97

+0

@ Rohinb97,实际上它应该比嵌套循环方法更快__much__,尤其是对于更大的文件 – MaxU

0

使用:结尾处的if检查。

if h2 == listSol[0]: 
+0

这太愚蠢了。我会纠正这一点。谢谢。 – Rohinb97

+0

关于第二部分的任何事情? – Rohinb97

+1

第二部分使用熊猫模块 –

相关问题