| 120 | param_names = ["sort"] |
| 121 | |
| 122 | def setup(self, sort): |
| 123 | level1 = Index([f"i-{i}" for i in range(10)], dtype=object).values |
| 124 | level2 = Index([f"i-{i}" for i in range(1000)], dtype=object).values |
| 125 | codes1 = np.arange(10).repeat(1000) |
| 126 | codes2 = np.tile(np.arange(1000), 10) |
| 127 | index2 = MultiIndex(levels=[level1, level2], codes=[codes1, codes2]) |
| 128 | self.df_multi = DataFrame( |
| 129 | np.random.randn(len(index2), 4), index=index2, columns=["A", "B", "C", "D"] |
| 130 | ) |
| 131 | |
| 132 | self.key1 = np.tile(level1.take(codes1), 10) |
| 133 | self.key2 = np.tile(level2.take(codes2), 10) |
| 134 | self.df = DataFrame( |
| 135 | { |
| 136 | "data1": np.random.randn(100000), |
| 137 | "data2": np.random.randn(100000), |
| 138 | "key1": self.key1, |
| 139 | "key2": self.key2, |
| 140 | } |
| 141 | ) |
| 142 | |
| 143 | self.df_key1 = DataFrame( |
| 144 | np.random.randn(len(level1), 4), index=level1, columns=["A", "B", "C", "D"] |
| 145 | ) |
| 146 | self.df_key2 = DataFrame( |
| 147 | np.random.randn(len(level2), 4), index=level2, columns=["A", "B", "C", "D"] |
| 148 | ) |
| 149 | |
| 150 | shuf = np.arange(100000) |
| 151 | np.random.shuffle(shuf) |
| 152 | self.df_shuf = self.df.reindex(self.df.index[shuf]) |
| 153 | |
| 154 | def time_join_dataframe_index_multi(self, sort): |
| 155 | self.df.join(self.df_multi, on=["key1", "key2"], sort=sort) |