我将 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
我的问题是
- 我想要所有数据类型都像我的指令,我该怎么做?
- 我也想替换这些缺失值,我用过
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/