| 914 | |
| 915 | class Transform: |
| 916 | def setup(self): |
| 917 | n1 = 400 |
| 918 | n2 = 250 |
| 919 | index = MultiIndex( |
| 920 | levels=[np.arange(n1), Index([f"i-{i}" for i in range(n2)], dtype=object)], |
| 921 | codes=[np.repeat(range(n1), n2).tolist(), list(range(n2)) * n1], |
| 922 | names=["lev1", "lev2"], |
| 923 | ) |
| 924 | arr = np.random.randn(n1 * n2, 3) |
| 925 | arr[::10000, 0] = np.nan |
| 926 | arr[1::10000, 1] = np.nan |
| 927 | arr[2::10000, 2] = np.nan |
| 928 | data = DataFrame(arr, index=index, columns=["col1", "col20", "col3"]) |
| 929 | self.df = data |
| 930 | |
| 931 | n = 1000 |
| 932 | self.df_wide = DataFrame( |
| 933 | np.random.randn(n, n), |
| 934 | index=np.random.choice(range(10), n), |
| 935 | ) |
| 936 | |
| 937 | n = 1_000_000 |
| 938 | self.df_tall = DataFrame( |
| 939 | np.random.randn(n, 3), |
| 940 | index=np.random.randint(0, 5, n), |
| 941 | ) |
| 942 | |
| 943 | n = 20000 |
| 944 | self.df1 = DataFrame( |
| 945 | np.random.randint(1, n, (n, 3)), columns=["jim", "joe", "jolie"] |
| 946 | ) |
| 947 | self.df2 = self.df1.copy() |
| 948 | self.df2["jim"] = self.df2["joe"] |
| 949 | |
| 950 | self.df3 = DataFrame( |
| 951 | np.random.randint(1, (n / 10), (n, 3)), columns=["jim", "joe", "jolie"] |
| 952 | ) |
| 953 | self.df4 = self.df3.copy() |
| 954 | self.df4["jim"] = self.df4["joe"] |
| 955 | |
| 956 | def time_transform_lambda_max(self): |
| 957 | self.df.groupby(level="lev1").transform(lambda x: max(x)) |