用字符串长度替换为NaN

时间:2020-04-14 10:30:41

标签: python pandas dataframe replace

我有一个带有多列字符串的数据框。如果字符串的长度小于8,如何检查每个单元格中的数据并删除所有这些数据?

例如:

df1 = pd.DataFrame([['123456789','0998733799','3245'], ['789793434','4','1221314234245']])

如何删除'3245'和'4'甚至用NaN代替?

2 个答案:

答案 0 :(得分:0)

在大熊猫DataFrame中,可以删除行或列,不能删除某些单元格。因此,以下是将Series.str.len设置为默认值NaN的每一列用DataFrame.mask替换为{{3}}的NaN的解决方案:

df1 = df1.mask(df1.apply(lambda x: x.str.len().lt(8)))

#if possible some values are integers
df1 = df1.mask(df1.astype(str).apply(lambda x: x.str.len().lt(8)))
print (df1)
           0           1              2
0  123456789  0998733799            NaN
1  789793434         NaN  1221314234245

答案 1 :(得分:0)

您可以使用下面的代码行

df = df.mask(df.apply(lambda x: x.str.len().lt(8)))