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

标签 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})

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

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

我的问题是

  1. 我想要所有数据类型都像我的指令,我该怎么做?
  2. 我也想替换这些缺失值,我用过pandas.filna()但是没有效果。我认为这是由于数据类型。您能否为此提供一些提示?

谢谢

最佳答案

使用转换器代替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。除非真正的文件是逗号分隔的。

关于python - 使用 Pandas 读取包含一些缺失值的 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34101912/

相关文章:

python - Pandas - 改变组的值

python - pyforms 忽略 settings.py 中的设置

python - Numpy 就地操作性能

python - 将 csv 文件中相似的句子字符串分组在一起

Python 从 csv 文件进行插值

python - pandas 的非常具体的任务

python - 如何在Python程序运行时更新它

python - SQLAlchemy:__tablename__ 作为变量

android - 将数据库保存为 CSV 文件时,为什么最后 3 列会变成一两列?

Python 准确地将日期格式转换为日期时间,其中包括 1970 年之前的日期