簡體   English   中英

如何將pandas DataFrame中的列從str(科學計數法)轉換為numpy.float64?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM