Why does this result in NaN instead of a string?

```py
df['rnd'] = df.apply(lambda x: str(random.randint(0,9999)).zfill(4))

rnd
---
NaN
NaN
NaN
NaN
NaN

```

```py
df.dtypes
Rnd                 object

```