我正在尝试将this制表符分隔的文件读取到带有一个警告的熊猫中:最后一列(均值)必须从代表科学计数法的值的字符串转换为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

关于python - 如何将 Pandas 数据框的列从str(科学计数法)转换为numpy.float64?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12417129/

10-16 01:08