说我有以下文件test.txt
:
Aaa Bbb
Foo 0
Bar 1
Baz NULL
(分隔符实际上是一个制表符,我似乎无法在这里输入。) 我尝试使用pandas(0.10.0)来阅读它:
In [523]: pd.read_table("test.txt")
Out[523]:
Aaa Bbb
0 Foo NaN
1 Bar 1
2 Baz NaN
请注意,第一列中的零值突然变为NaN!我期待像这样的DataFrame:
Aaa Bbb
0 Foo 0
1 Bar 1
2 Baz NaN
为了获得后者需要改变什么?我想我可以使用pd.read_table("test.txt", na_filter=False)
并随后用NaN替换'NULL'值并更改列dtype。有更直接的解决方案吗?
答案 0 :(得分:2)
我认为这是问题#2599,“如果列包含任何nan,read_csv将零视为nan,”现在已关闭。我无法在我的开发版本中重现:
In [27]: with open("test.txt") as fp:
....: for line in fp:
....: print repr(line)
....:
'Aaa\tBbb\n'
'Foo\t0\n'
'Bar\t1\n'
'Baz\tNULL\n'
In [28]: pd.read_table("test.txt")
Out[28]:
Aaa Bbb
0 Foo 0
1 Bar 1
2 Baz NaN
In [29]: pd.__version__
Out[29]: '0.10.1.dev-f7f7e13'
答案 1 :(得分:0)
尝试:
import pandas as pd
df = pd.read_table("14256839_input.txt", sep=" ", na_values="NULL")
print df
print df.dtypes
这给了我
Aaa Bbb
0 Foo 0
1 Bar 1
2 Baz NaN
Aaa object
Bbb float64