Tag: 时间复杂性

如何pipe理跨多个数据集的查询

我是新来的大数据工作,并试图复制一些CSV查找pandas代码。 在较小的数据集,我已经能够摆脱嵌套循环。 CSV中的查找是遍历数据表1中的所有行,匹配数据表2中的两个字段,并且如果匹配则设置数据表1的行值: =IFERROR( IF( ISBLANK( INDEX(RefTable!$D:$D,MATCH($E6,RefTable!$A:$A,0)) ), "", INDEX(RefTable!$D:$D,MATCH($E6,RefTable!$A:$A,0)) ), "" ) 当我尝试在pandas中这样做的时候,结果是O(n^2)操作变得很慢。 例如,查找特定行的匹配城市,然后设置状态: # total loops: 1000×100 = 100,000 for i, row in dataframe1.iterrows(): # 1000 rows for j, row2 in dataframe2.iterrows(): # 100 rows if row['market_city'] == row2['city']: dataframe1.loc[i, 'state'] = row2['state'] 我怎样才能把它分解成像O(n)这样更易于pipe理的东西?

这两种在VBA中使用循环的方式的时间复杂度有什么区别?

我有一个理论上的问题,如果你在这里给我build议,会很感激。 说,我们有这两个代码段。 第一: For Each cell In rng1 collectionOfValues.Add (cell.Value) Next For Each cell In rng2 collectionOfAddresses.Add (cell.Address) Next For i = 1 To collectionOfAddresses.Count Range(collectionOfAddresses.Item(i)) = collectionOfValues.Item(i) Next i 在这里,我们将一个范围内的地址添加到某个集合中,并将另一个范围内的值添加到另一个集合中,然后用这些值填充这些地址上的单元格。 这里是第二个代码,这是相同的: For i = 1 To rng1.Rows.Count For j = 1 To rng1.Columns.Count rng2.Cells(i, j) = rng1.Cells(i, j) Next j Next i 所以,问题是 – […]