在Python Pandas中尝试从CSV文件中删除nan
我正在尝试从一个最终的csv文件中去掉nan值,这个文件将用作数字标牌的数据源。
我使用fillna来去掉空数据,以防止在标牌上出现'nan'。fillna的确有效,但因为这些数据有格式,所以在空的csv字段里出现了()-
。
df = pd.read_csv(filename)
df = df.fillna('')
df = df.astype(str)
df['PhoneNumber']=df['CONTACT PHONE NUMBER'].apply(lambda x: '('+x[:3]+')'+x[3:6]+'-'+x[6:10])
我试着写一个if...else
语句来分开数组中的行,但因为格式是应用在整个列表上的,而不是逐个条目,所以这样做不行。
1 个回答
1
对你的lambda函数做一个简单的修改就可以解决问题:
>>> y=lambda x: (x and '('+x[:3]+')'+x[3:6]+'-'+x[6:10]) or ''
>>> y('123456789')
'(123)456-789'
>>> y('')
''
编辑:
你也可以把“与/或”的写法换成“如果-否则”的结构:
>>> y=lambda x: '('+x[:3]+')'+x[3:6]+'-'+x[6:10] if x else ''