是否有任何原因导致NaN而不是生成的str ?



为什么这会导致NaN而不是字符串?

df['rnd'] = df.apply(lambda x: str(random.randint(0,9999)).zfill(4))
rnd
---
NaN
NaN
NaN
NaN
NaN
df.dtypes
Rnd                 object

如果你只想要一个新的随机列(作为零填充字符串),你可以用numpy的randint(它接受一个size)和str.zfill对它进行矢量化,例如:

df = pd.DataFrame(np.random.random((4, 3)))
df['rnd'] = np.random.randint(0, 999, size=len(df))
df['rnd'] = df['rnd'].astype(str).str.zfill(4)

输出:

0         1         2   rnd
0  0.696305  0.624101  0.235630  0056
1  0.437783  0.558600  0.451735  0913
2  0.061021  0.633813  0.008970  0509
3  0.944699  0.713951  0.478524  0088

u need applymap not apply

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

这是结果

0    0179
1    4545
2    8510
3    3316
Name: rnd, dtype: object

如果你想使用apply方法,那么你需要指定要操作的列:

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

需要一个axis

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

相关内容

  • 没有找到相关文章

最新更新