在Python Pandas中尝试从CSV文件中删除nan

0 投票
1 回答
1067 浏览
提问于 2025-04-17 20:23

我正在尝试从一个最终的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 ''

撰写回答