@@ -427,7 +427,51 @@ def _aggregate_named(self, func, *args, **kwargs):
427
427
428
428
return result
429
429
430
- @Substitution (klass = "Series" )
430
+ __examples_series_doc = dedent (
431
+ """
432
+ >>> ser = pd.Series(
433
+ ... [390.0, 350.0, 30.0, 20.0],
434
+ ... index=["Falcon", "Falcon", "Parrot", "Parrot"],
435
+ ... name="Max Speed")
436
+ >>> grouped = ser.groupby([1, 1, 2, 2])
437
+ >>> grouped.transform(lambda x: (x - x.mean()) / x.std())
438
+ Falcon 0.707107
439
+ Falcon -0.707107
440
+ Parrot 0.707107
441
+ Parrot -0.707107
442
+ Name: Max Speed, dtype: float64
443
+
444
+ Broadcast result of the transformation
445
+
446
+ >>> grouped.transform(lambda x: x.max() - x.min())
447
+ Falcon 40.0
448
+ Falcon 40.0
449
+ Parrot 10.0
450
+ Parrot 10.0
451
+ Name: Max Speed, dtype: float64
452
+
453
+ >>> grouped.transform("mean")
454
+ Falcon 370.0
455
+ Falcon 370.0
456
+ Parrot 25.0
457
+ Parrot 25.0
458
+ Name: Max Speed, dtype: float64
459
+
460
+ .. versionchanged:: 1.3.0
461
+
462
+ The resulting dtype will reflect the return value of the passed ``func``,
463
+ for example:
464
+
465
+ >>> grouped.transform(lambda x: x.astype(int).max())
466
+ Falcon 390
467
+ Falcon 390
468
+ Parrot 30
469
+ Parrot 30
470
+ Name: Max Speed, dtype: int64
471
+ """
472
+ )
473
+
474
+ @Substitution (klass = "Series" , example = __examples_series_doc )
431
475
@Appender (_transform_template )
432
476
def transform (self , func , * args , engine = None , engine_kwargs = None , ** kwargs ):
433
477
return self ._transform (
@@ -1407,7 +1451,61 @@ def _transform_general(self, func, *args, **kwargs):
1407
1451
concatenated = concatenated .reindex (concat_index , axis = other_axis , copy = False )
1408
1452
return self ._set_result_index_ordered (concatenated )
1409
1453
1410
- @Substitution (klass = "DataFrame" )
1454
+ __examples_dataframe_doc = dedent (
1455
+ """
1456
+ >>> df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
1457
+ ... 'foo', 'bar'],
1458
+ ... 'B' : ['one', 'one', 'two', 'three',
1459
+ ... 'two', 'two'],
1460
+ ... 'C' : [1, 5, 5, 2, 5, 5],
1461
+ ... 'D' : [2.0, 5., 8., 1., 2., 9.]})
1462
+ >>> grouped = df.groupby('A')[['C', 'D']]
1463
+ >>> grouped.transform(lambda x: (x - x.mean()) / x.std())
1464
+ C D
1465
+ 0 -1.154701 -0.577350
1466
+ 1 0.577350 0.000000
1467
+ 2 0.577350 1.154701
1468
+ 3 -1.154701 -1.000000
1469
+ 4 0.577350 -0.577350
1470
+ 5 0.577350 1.000000
1471
+
1472
+ Broadcast result of the transformation
1473
+
1474
+ >>> grouped.transform(lambda x: x.max() - x.min())
1475
+ C D
1476
+ 0 4.0 6.0
1477
+ 1 3.0 8.0
1478
+ 2 4.0 6.0
1479
+ 3 3.0 8.0
1480
+ 4 4.0 6.0
1481
+ 5 3.0 8.0
1482
+
1483
+ >>> grouped.transform("mean")
1484
+ C D
1485
+ 0 3.666667 4.0
1486
+ 1 4.000000 5.0
1487
+ 2 3.666667 4.0
1488
+ 3 4.000000 5.0
1489
+ 4 3.666667 4.0
1490
+ 5 4.000000 5.0
1491
+
1492
+ .. versionchanged:: 1.3.0
1493
+
1494
+ The resulting dtype will reflect the return value of the passed ``func``,
1495
+ for example:
1496
+
1497
+ >>> grouped.transform(lambda x: x.astype(int).max())
1498
+ C D
1499
+ 0 5 8
1500
+ 1 5 9
1501
+ 2 5 8
1502
+ 3 5 9
1503
+ 4 5 8
1504
+ 5 5 9
1505
+ """
1506
+ )
1507
+
1508
+ @Substitution (klass = "DataFrame" , example = __examples_dataframe_doc )
1411
1509
@Appender (_transform_template )
1412
1510
def transform (self , func , * args , engine = None , engine_kwargs = None , ** kwargs ):
1413
1511
return self ._transform (
0 commit comments