一种有效的多csv文件数据匹配方法

2024-10-03 06:22:24 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我的代码片段:

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文件中的数据条目。我见过它的功能,但它不能识别它的功能。所以我做这个只是为了通过pandas搜索和执行操作,但是它的复杂性是$O(n^2)$,而且非常慢。有什么帮助吗?你知道吗

编辑:所以我在代码中使用pandas和numpy来处理数据。为了更清楚地说明这一点,我需要搜索两个不同文件中相同索引列的元素是相同的。考虑以下示例:

你知道吗解决方案.csv地址:

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

你知道吗项目预览.csv地址:

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

所以在这两个文件中常见的条目是7,8,5。我想知道搜索和匹配它们的最快方法。你知道吗

更新:上一个问题是关于一个语法错误,该错误已解决。你知道吗


Tags: 文件csv代码idforiflistr2
2条回答

if检查的末尾使用:。你知道吗

if h2 == listSol[0]:

尝试这种矢量化方法:

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

相关问题 更多 >