4.2.1 Different Choices for Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
4.2.2 Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
4.2.3 Attribute Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
4.2.4 Slicing ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
4.2.5 Selection By Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
4.2.6 Selection By Position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
4.2.7 Selection By Callable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
4.2.8 IX Indexer is Deprecated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
4.2.9 Indexing with list with missing labels is Deprecated . . . . . . . . . . . . . . . . . . . . . . 332
4.2.10 Selecting Random Samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
4.2.11 Setting With Enlargement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
4.2.12 Fast scalar value getting and setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
4.2.13 Boolean indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
4.2.14 Indexing with isin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
4.2.15 The where() Method and Masking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
4.2.16 The query() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
4.2.17 Duplicate Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
4.2.18 Dictionary-like get() method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
4.2.19 The lookup() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
4.2.20 Index objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
4.2.21 Set / Reset Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
4.2.22 Returning a view versus a copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
4.3 MultiIndex / Advanced Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
4.3.1 Hierarchical indexing (MultiIndex) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
4.3.2 Advanced indexing with hierarchical index . . . . . . . . . . . . . . . . . . . . . . . . . . 375
4.3.3 Sorting a MultiIndex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
4.3.4 Take Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
4.3.5 Index Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
4.3.6 Miscellaneous indexing FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
4.4 Merge, join, and concatenate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
4.4.1 Concatenating objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
4.4.2 Database-style DataFrame or named Series joining/merging . . . . . . . . . . . . . . . . . 416
4.4.3 Timeseries friendly merging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
4.5 Reshaping and Pivot Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
4.5.1 Reshaping by pivoting DataFrame objects . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
4.5.2 Reshaping by stacking and unstacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
4.5.3 Reshaping by Melt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
4.5.4 Combining with stats and GroupBy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
4.5.5 Pivot tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
4.5.6 Cross tabulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
4.5.7 Tiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
4.5.8 Computing indicator / dummy variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
4.5.9 Factorizing values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
4.5.10 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
4.6 Working with Text Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
4.6.1 Splitting and Replacing Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
4.6.2 Concatenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
4.6.3 Indexing with .str . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
4.6.4 Extracting Substrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
4.6.5 Testing for Strings that Match or Contain a Pattern . . . . . . . . . . . . . . . . . . . . . . 479
4.6.6 Creating Indicator Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
4.6.7 Method Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
4.7 Working with missing data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
4.7.1 Values considered “missing” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
iii