Python 使用dtype读取文件处理熊猫中缺少的值

Python 使用dtype读取文件处理熊猫中缺少的值,python,pandas,missing-data,Python,Pandas,Missing Data,我正在读取一组CSV文件,使用dtype指定每列的数据类型: dict_tpye = {"columns_1":"int","column_2":"str"} pd.read_csv(path,dtype=dict_tpye) 我在这样做时面临的问题是,具有非浮点值的列缺少行,这会导致错误。我该怎么办 对于这种情况,我希望使用默认值,例如0表示数值,空字符串表示名称。填充缺少的w/a占位符的一种方法是在将数据读入数据帧后执行填充。像这样 #!/usr/bin/env python # -*-

我正在读取一组CSV文件,使用dtype指定每列的数据类型:

dict_tpye = {"columns_1":"int","column_2":"str"}
pd.read_csv(path,dtype=dict_tpye)
我在这样做时面临的问题是,具有非浮点值的列缺少行,这会导致错误。我该怎么办


对于这种情况,我希望使用默认值,例如0表示数值,空字符串表示名称。

填充缺少的w/a占位符的一种方法是在将数据读入数据帧后执行填充。像这样

#!/usr/bin/env python
# -*- coding: utf-8 -*- 
import numpy as np
import pandas as pd

# csv data with missing data in each of the 2 columns
csv_data = """number,colour
3,blue
12,
2,
2,red
,yellow
6,yellow
14,purple
4,green
18,green
11,orange"""

df = pd.read_csv(pd.io.parsers.StringIO(csv_data))

df.number = df.number.fillna(-999)    # fill missing numbers w/ -999
df.colour = df.colour.fillna('UNK')   # fill missing categorical w/ UNK 

print df

# In [1]: run test.py
#    number  colour
# 0     3.0    blue
# 1    12.0     UNK
# 2     2.0     UNK
# 3     2.0     red
# 4  -999.0  yellow
# 5     6.0  yellow
# 6    14.0  purple
# 7     4.0   green
# 8    18.0   green
# 9    11.0  orange
考虑使用字典的converters参数,它将用户定义函数的结果映射到导入的列。下面的用户定义方法使用内置函数,如果字符串中的所有字符都是数字,则返回
True
;如果至少有一个不是数字,则返回
False
;和字符串对应。根据需要进行调整,特别是使用字符串,因为您可以在其内容中使用数字:

import pandas as pd

cleanFloat = lambda x: float(x if x.isdigit() else 0) 
cleanString = lambda x: str(x if x.isalpha() else '')

dict_convert = {1:cleanFloat, 2:cleanString,}
dict_type = {"columns_1":"int","column_2":"str"}

df = pd.read_csv('Input.csv', converters=dict_convert, dtype=dict_type)

NaN
只能用float-dtype表示,那么您到底想要什么呢?你只是说你有问题,而没有说你想要什么。可以替换缺少的值,也可以删除them@EdChum我希望在这种情况下使用默认值,例如0表示数值,空字符串表示名称。