首页 > 解决方案 > 将所有非空转换为小写

问题描述

抱歉,我是熊猫新手。我正在尝试将数据框中的所有值转换为小写,除非它们为空。我尝试以下方法:

Df = df.apply (lambda x: x if pd.isna (x) else x.astype (str).str.lower() 

但得到一个错误

\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1573, in __nonzero__
  .format (self.__class__.__name__))
ValueError: ('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', 'occurred at index oss')

标签: pandas

解决方案


你可以fillna用一些唯一的字符串然后

df.fillna('thisnanwillreplaceback').apply(lambda x :x.str.lower()).replace('thisnanwillreplaceback',np.nan)
Out[275]: 
     A    C
0  aad  aad
1  aac  aac
2  NaN  aad

简单数据

df=pd.DataFrame({'A':['AAD','AAC',np.nan],'C':['AAD','AAC','AAD']})

推荐阅读