我在Pandas中有一个数据框,当我尝试剥离某些字符时,它会给我以下错误:
AttributeError:' NoneType'对象没有属性' lstrip'
我开始删除任何缺失或空值:
df_sample1['counties'].fillna('missing')
检查它,我看到很多不干净的数据,实际数据的混合(县1,计数2 ...计数n)以及乱码($%ZYC 2)。
为了进一步清理,我运行了以下代码:
df_sample1['counties'] = df_sample1['counties'].map(lambda x: x.lstrip('+%=/-#$;!\(!\&=&:%;').rstrip('1234567890+%=/-#$;!\(!\&=&:%;'))
df_sample1[:10]
这会生成' NoneType'错误。 我挖了一点,在Pandas文档中,有一些关于跳过缺失值的提示。
if df_sample1['counties'] is None:
pass
else:
df_sample1['counties'].map(lambda x: x.lstrip('+%=/-#$;!\(!\&=&:%;').rstrip('1234567890+%=/-#$;!\(!\&=&:%;'))
这仍然会生成上面提到的NoneType错误。有人能指出我做错了吗?
答案 0 :(得分:1)
你可以"跳过" None
通过在执行剥离之前检查x
是否真实...
df_sample1['counties'].map(lambda x: x and x.lstrip('+%=/-#$;!\(!\&=&:%;').rstrip('1234567890+%=/-#$;!\(!\&=&:%;'))
这可能会在数据框中留下一些None
(在之前的相同位置),但转换应该仍然适用于字符串。
答案 1 :(得分:1)
如果您正在处理文本数据,为什么不首先使用空字符串填充无类型数据?
defaultConfig {
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
}
答案 2 :(得分:1)
我怀疑您的问题是,当您填写缺失的值时,您没有在原地进行此操作。这可以通过以下方式解决:
df_sample1['counties'].fillna('missing', inplace=True)
或者,在应用pandas.Series.map
时,您可以使用参数na_action
将这些条目保留为None
。
df_sample1['counties'] = df_sample1['counties'].map(lambda x: ..., na_action='ignore')