我有一个带有多列字符串的数据框。如果字符串的长度小于8,如何检查每个单元格中的数据并删除所有这些数据?
例如:
df1 = pd.DataFrame([['123456789','0998733799','3245'], ['789793434','4','1221314234245']])
如何删除'3245'和'4'甚至用NaN代替?
答案 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)))