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的原因之一。谢谢!我转换为浮动,它的工作!