Python Pandas read_table()--如何使用多种自定义NA格式?
我有以下表格中的数据:Python Pandas read_table()--如何使用多种自定义NA格式?,python,pandas,Python,Pandas,我有以下表格中的数据: 000000008,2, 1,000000009,H,9740,000000008 000000009,1, 1,000000009,G,8790,000000008 000000010,1, 1,000000009,A,4081,000000008 000000011,2, 1, ., , .,000000011 000000012,3, 1, ., , ., . 000000013,2, 1, ., ,
000000008,2, 1,000000009,H,9740,000000008
000000009,1, 1,000000009,G,8790,000000008
000000010,1, 1,000000009,A,4081,000000008
000000011,2, 1, ., , .,000000011
000000012,3, 1, ., , ., .
000000013,2, 1, ., , .,000000013
您可以看到在最后3行中缺少一些值,这就是问题所在:如何转换为正确的数据类型并处理大型数据集的这些情况
对于某些列,如果缺少该值,我希望排除这些行,对于其他列,我希望将其设置为某个值
这是我的密码:
inputDBFilename = inputDir + 'testData.txt'
df = pd.read_table(inputDBFilename, delimiter=',',
names=('A', 'B', 'C', 'D', 'E', 'F', 'G'),
na_values=[' .'],
dtype={'A': np.uint64, 'B': np.uint8, 'C': np.uint8, 'D': np.uint64,
'E': np.str, 'F': np.uint16, 'G': np.uint64})
我得到一个错误:
ValueError: Integer column has NA values in column 3
但为什么这是一个错误--它应该期望那些NA值 您可以在读取CSV时直接指定消费者NA值格式。如果有多种类型的NA值字符串,请向
NA值
参数提供一个列表
In [62]:
T = '''000000008,2, 1,000000009,H,9740,000000008
000000009,1, 1,000000009,G,8790,000000008
000000010,1, 1,000000009,A,4081,000000008
000000011,2, 1, ., , .,000000011
000000012,3, 1, ., , ., .
000000013,2, 1, ., , .,000000013'''
from io import StringIO
df = pd.read_csv(StringIO(T), na_values=[' .', ' .'], header=None)
df
Out[62]:
0 1 2 3 4 5 6
0 8 2 1 9.0 H 9740.0 8.0
1 9 1 1 9.0 G 8790.0 8.0
2 10 1 1 9.0 A 4081.0 8.0
3 11 2 1 NaN NaN 11.0
4 12 3 1 NaN NaN NaN
5 13 2 1 NaN NaN 13.0
在
int
列中不能有NaN
值,NaN
是浮点数。问题是numpy没有NaN
/null对象用于int
-类型。这是一个有很好记录的问题,也是熊猫最终离开numpy,转而转向Apache Arrow的原因之一。谢谢!我转换为浮动,它的工作!