Add a column to a DataFrame

"""
Sort a DataFrame in order of decreasing length of name.
Break ties by sortting in alphabetical order.
"""

import sys
import pandas as pd

url = "http://oit2.scps.nyu.edu/~meretzkm/pandas/dataframe/yob2018.txt"
names = ["name", "sex", "births"]
df = pd.read_csv(url, names = names)
print(df)
print()

df["length"] = df["name"].str.len() #Add a column giving length of each name.
print(df)
print()

df.sort_values(by = ["length", "name"], ascending = [False, True], inplace = True)
print(df)
print()

del df["length"]                            #Delete the new column.
df.reset_index(drop = True, inplace = True) #Change the index to 0, 1, 2, ...

print()
with pd.option_context("display.min_rows", 60):
    print(df)

sys.exit(0)
           name sex  births
0          Emma   F   18688
1        Olivia   F   17921
2           Ava   F   14924
3      Isabella   F   14464
4        Sophia   F   13928
...         ...  ..     ...
32028     Zylas   M       5
32029     Zyran   M       5
32030     Zyrie   M       5
32031     Zyron   M       5
32032     Zzyzx   M       5

[32033 rows x 3 columns]

           name sex  births  length
0          Emma   F   18688       4
1        Olivia   F   17921       6
2           Ava   F   14924       3
3      Isabella   F   14464       8
4        Sophia   F   13928       6
...         ...  ..     ...     ...
32028     Zylas   M       5       5
32029     Zyran   M       5       5
32030     Zyrie   M       5       5
32031     Zyron   M       5       5
32032     Zzyzx   M       5       5

[32033 rows x 4 columns]

                  name sex  births  length
31441  Muhammadibrahim   M       5      15
31442  Muhammadmustafa   M       5      15
30197   Alexanderjames   M       5      14
16272   Elizabethgrace   F       5      14
12005   Mariaguadalupe   F       8      14
...                ...  ..     ...     ...
22358               Yi   M      24       2
25575               Yu   M      11       2
5103                Zo   F      26       2
30097               Zo   M       6       2
30102               Zy   M       6       2

[32033 rows x 4 columns]


                  name sex  births
0      Muhammadibrahim   M       5
1      Muhammadmustafa   M       5
2       Alexanderjames   M       5
3       Elizabethgrace   F       5
4       Mariaguadalupe   F       8
5       Michaelanthony   M       6
6       Oluwafifehanmi   F       5
7       Oluwatimilehin   M      10
8        Charlotterose   F       5
9        Chrysanthemum   F       6
10       Elizabethrose   F       9
11       Ifeanyichukwu   M       7
12       Isabellamarie   F       5
13       Josephanthony   M       5
14       Kamsiyochukwu   F      13
15       Kamsiyochukwu   M      12
16       Mariafernanda   F      28
17       Mariavictoria   F       8
18       Marycatherine   F       8
19       Maryelizabeth   F      15
20       Marykatherine   F      10
21       Michaelangelo   M      22
22       Moyosoreoluwa   F       5
23       Muhammadyusuf   M       9
24       Oluwadamilare   M      10
25       Oluwadamilola   F      11
26       Oluwadamilola   M       5
27       Oluwadarasimi   F      41
28       Oluwadarasimi   M      17
29       Oluwademilade   F       8
...                ...  ..     ...
32003               Lj   M       7
32004               Lo   F       5
32005               Lu   F       5
32006               Ma   F       7
32007               Md   M      29
32008               Mi   F      11
32009               Mj   F       5
32010               Mj   M      17
32011               My   F       6
32012               Om   M      78
32013               Oz   M      39
32014               Qi   M       5
32015               Ra   M      16
32016               Rj   M      30
32017               Ry   M      10
32018               Sa   F       6
32019               Sy   M      11
32020               Tj   M      30
32021               Tu   F       5
32022               Ty   F       9
32023               Ty   M     466
32024               Vi   F      12
32025               Vu   M       6
32026               Vy   F      25
32027               Xi   F       5
32028               Yi   M      24
32029               Yu   M      11
32030               Zo   F      26
32031               Zo   M       6
32032               Zy   M       6