以下是我的代码片段:
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但它无法识别该函数。所以我只是通过pandas来搜索和执行操作,但是它的复杂度为$ O(n ^ 2)$并且非常慢。对此有何帮助?
编辑:所以我在代码中使用pandas和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
所以这里的共同条目是两个文件中的7,8,5。我想知道搜索和匹配它们的最快方法。
更新:上一个问题是关于已解决的语法错误。
答案 0 :(得分:2)
尝试这种矢量化的熊猫方法:
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
答案 1 :(得分:0)
在:
检查结束时使用if
。
if h2 == listSol[0]: