[英]How do I convert a column from a pandas DataFrame from str (scientific notation) to numpy.float64?
我正在嘗試將此制表符分隔的文件讀為帶有一個警告的熊貓:最后一列(均值)必須從代表科學計數法的值的字符串轉換為numpy.float64。
到目前為止,我已經嘗試過
df = pd.DataFrame(pd.io.parsers.read_table(fle, converters={'mean': lambda x: np.float64(x)}))
但是我在df ['mean']中得到的都是0
和-0
。
我還嘗試了在不使用converters
kwarg的情況下進行導入,然后通過執行df['mean'].astype(np.float64)
投射列,結果相似。
是什么賦予了?
它們不為零。 pandas
在打印DataFrame/Series
時可能會進行一些格式化,因此它們看起來像零。
順便說一句,您不需要轉換器。 read_table
正確地將它們標識為float64
:
In [117]: df = pandas.read_table('gradStat_mmn.tdf')
In [118]: df.ix[0:10]
Out[118]:
Subject Group Local Global Attn mean
0 1 DSub S S Attn 0
1 1 DSub S S Dist 0
2 1 DSub D S Attn 0
3 1 DSub D S Dist 0
4 1 DSub S D Attn 0
5 1 DSub S D Dist 0
6 1 DSub D D Attn 0
7 1 DSub D D Dist 0
8 2 ASub S S Attn 0
9 2 ASub S S Dist 0
10 2 ASub D S Attn 0
In [119]: df['mean'].dtype
Out[119]: dtype('float64')
In [120]: df['mean'][0]
Out[120]: 3.2529000000000002e-22
這已在0.9版本的熊貓中修復:
In [4]: df = pandas.read_table('http://dl.dropbox.com/u/6160029/gradStat_mmn.tdf')
In [5]: df.head()
Out[5]:
Subject Group Local Global Attn mean
0 1 DSub S S Attn 3.252900e-22
1 1 DSub S S Dist 6.010100e-22
2 1 DSub D S Attn 4.215700e-22
3 1 DSub D S Dist 8.308100e-22
4 1 DSub S D Attn 2.983500e-22
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.