2

次のファイルがあるとしますtest.txt

Aaa Bbb
Foo 0
Bar 1
Baz NULL

(区切り文字は実際にはタブ文字であり、ここでは入力できないようです。)そして、パンダ (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)「NULL」値を使用し、その後 NaN に置き換えて、列の dtype を変更できると思います。もっと簡単な解決策はありますか?

4

2 に答える 2

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'
于 2013-01-10T11:35:17.307 に答える
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
于 2013-01-10T11:33:59.210 に答える