I have a two columns in my dataframe that contain mixed strings - some are all letters, and some are all digits. I need to pad the digit strings with leading zeroes, but not the letter strings.

Input:

```
    Item
0   571
1   63
2   12345
3   99561
4   lid
5   show

```

Desired output:

```
    Item
0   00571
1   00063
2   12345
3   99561
4   lid
5   show

```

Here's what I've got so far:

```
item_columns = ['Item','Item_num']
for column in item_columns:
    df[column][df[column].notnull()] = df[column].astype(str).str.zfill(5)

```

The output is:

```
    Item
0   00571
1   00063
2   12345
3   99561
4   00lid
5   0show

```

I can't have those leading zeroes on index 4 and 5.
Note: I also need to preserve NaN's so they will load into the database as NULL, that's why I am checking for notnull() before doing the conversion. 

Different from [this](https://stackoverflow.com/questions/42375068/python-add-a-leading-zero-to-column-with-str-and-int) question because I need to avoid padding the letter strings.