@@ -201,6 +201,52 @@ def insert_column(self, loc: int, column: Column[Any]) -> DataFrame:
201
201
"""
202
202
...
203
203
204
+ def insert_columns (self , locs_and_columns : Sequence [tuple [int , Column [Any ]]]) -> DataFrame :
205
+ """
206
+ Insert columns into DataFrame at specified locations.
207
+
208
+ Like `insert_column`, but can insert multiple (independent) columns.
209
+ Some implementations may be able to make use of parallelism in this
210
+ case. For example instead of:
211
+
212
+ .. code-block::
213
+
214
+ new_column = df.get_column_by_name('a') + 1
215
+ df = df.insert_column(0, new_column.rename('a_plus_1'))
216
+ new_column = df.get_column_by_name('b') + 1
217
+ df = df.insert_column(1, new_column.rename('b_plus_1'))
218
+
219
+ it would be better to write
220
+
221
+ .. code-block::
222
+
223
+ new_column_0 = df.get_column_by_name('a') + 1
224
+ new_column_1 = df.get_column_by_name('b') + 1
225
+ df = df.insert_columns(
226
+ [
227
+ (0, new_column_0.rename('a_plus_1')),
228
+ (1, new_column_1.rename('b_plus_1')),
229
+ ]
230
+ )
231
+
232
+ so that insertion can happen in parallel for some implementations.
233
+
234
+ Parameters
235
+ ----------
236
+ locs_and_columns : Sequence[Tuple[int, Column]]
237
+ Sequence of tuples of the kind (location, column).
238
+ Must be independent of each other.
239
+ Locations and column names must be unique.
240
+ Column names may not already be present in the
241
+ dataframe - use `DataFrame.rename` to rename them
242
+ beforehand if necessary.
243
+
244
+ Returns
245
+ -------
246
+ DataFrame
247
+ """
248
+ ...
249
+
204
250
def drop_column (self , label : str ) -> DataFrame :
205
251
"""
206
252
Drop the specified column.
0 commit comments