使用Pandas读取包含一些缺失值的CSV

时间:2015-12-05 06:12:07

标签: python csv pandas

我将Python 2.7与Anaconda一起使用。我有一个.csv文件:

  action_type                action_detail secs_elapsed
0        data             similar_listings        255.0
1        data             similar_listings        183.0
2       click  change_trip_characteristics     175570.0
3         NaN                          NaN         86.0
4        data      wishlist_content_update       1535.0

该文件包含一些缺失值,每列的数据类型不一定相似。我用Pandas加载了这个.csv

for chunk in pd.read_csv('the_file_name.csv', chunksize=1000, 
                         dtype={'action_type': str, 'action_detail': str,
                                'secs_elapsed': str})

对于每个块,我发现某些行的数据类型不是函数pd.read_csv中的指令。让我举个例子

chunk.ix[3, 'action_type']
Out[1]: nan
type(chunk.ix[3, 'action_type'])
Out[2]: float

我的问题是

  1. 我希望所有数据类型都像我的指示,我怎么能这样做?
  2. 我也想替换这些缺失的值,我使用了pandas.filna()但它没有效果。我认为这是由于数据类型。你能不能给出一些暗示吗?
  3. 谢谢

1 个答案:

答案 0 :(得分:0)

使用converters代替dtype

for chunk in pd.read_csv('the_file_name.csv', chunksize=1000, delim_whitespace=True,
    converters={'action_type': str, 'action_detail': str,'secs_elapsed': str}):

>>> type(chunk.ix[3, 'action_type'])
str

此外,对于您的文件示例,您需要设置delim_whitespace=True。除非真实文件以逗号分隔。