将 Pandas DataFrame 中的列转换为带有 nan 值的浮点数

西尔弗利斯

我正在使用 Pandas 和 Python3.4 操作数据。我遇到了特定 csv 文件的问题。我不知道为什么,即使有nan值,pandas 通常也会将列读取为float. 在这里它将它们读作string. 这是我的 csv 文件的样子:

Date        RR  TN  TX
08/10/2015  0   10.5    19.5
09/10/2015  0   5.5 20
10/10/2015  0   5   24
11/10/2015  0.5 7   24.5
12/10/2015  3   12  23
...
27/04/2017           
28/04/2017           
29/04/2017           
30/04/2017           
01/05/2017           
02/05/2017           
03/05/2017           
04/05/2017           

问题是我无法将其转换为float因为nan最后值。我需要它们,float因为我正在尝试做TN+ TX这是我到目前为止尝试过的:

读取文件时:

dfs[code] = pd.read_csv(path, sep = ';', index_col = 0, parse_dates = True, encoding = 'ISO-8859-1', dtype = float)

我也试过:

dtype = {
    'TN': np.float,
    'TX': np.float
}
dfs[code] = pd.read_csv(path, sep = ';', index_col = 0, parse_dates = True, encoding = 'ISO-8859-1', dtype = dtype)

否则,此时执行添加我也尝试过:

tn = dfs[code]['TN'].astype(float)
tx = dfs[code]['TX'].astype(float)
formatted_dfs[code] = tn + tx

但我总是得到同样的错误:

ValueError: could not convert string to float.

我知道我可以逐行进行,测试值是否为nan,但我很确定有更简单的方法。你知道怎么做吗?还是我必须一行一行地做?谢谢。

迈克尔·史密斯

你可以看到,如果你允许 pandas 自己检测 dtypes,你就避免了 ValueError 并发现了潜在的问题。

In [4]: df = pd.read_csv(path, sep=';', index_col=0, parse_dates=True, low_memory=False)
In [5]: df
Out[5]:
Empty DataFrame
Columns: []
Index: [08/10/2015  0   10.5    19.5, 09/10/2015  0   5.5 20, 10/10/2015  0   5   24, 11/10/2015  0.5 7   24.5, 12/10/2015  3   12  23, 27/04/2017           , 28/04/2017           , 29/04/2017           , 30/04/2017           , 01/05/2017           , 02/05/2017           , 03/05/2017           , 04/05/2017   ]

似乎您';'无意中指定了分隔符,因为您的文件是用空格分隔的。由于没有任何分号,整个行都被读入索引。

首先,尝试使用正确的分隔符读入您的文件

df = pd.read_csv(path, delim_whitespace=True, index_col=0, parse_dates=True, low_memory=False)

现在,某些行的数据不完整。从概念上讲,一个简单的解决方案是尝试将值转换为np.float,并用np.nan其他方式替换它们

def f(x):
    try:
        return np.float(x)
    except:
        return np.nan

df["TN"] = df["TN"].apply(f)
df["TX"] = df["TX"].apply(f)

print(df.dtypes)

这会根据需要返回

RR     object
TN    float64
TX    float64
dtype: object

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

pandas DataFrame Combine_first方法将浮点数转换为布尔值

来自分类Dev

将列中的字符串十进制数转换为 Pandas DataFrame 中的浮点数

来自分类Dev

将 Pandas 数据框中带逗号的值转换为浮点数。

来自分类Dev

Pandas DataFrame:无法将字符串转换为浮点数

来自分类Dev

将浮点数转换为具有数字和nan的列的整数

来自分类Dev

将Pandas DataFrame中的列值与“ NaN”值连接

来自分类Dev

将Pandas DataFrame中的列值与“ NaN”值连接

来自分类Dev

Python-将美元值转换为浮点数

来自分类Dev

无法将字符串转换为浮点数 - 不是数字 (NaN)

来自分类Dev

带有字符串和浮点数的Pandas Dataframe列

来自分类Dev

尝试将数据框列除以浮点数会产生NaN

来自分类Dev

将timedelta转换为浮点数

来自分类Dev

将数据转换为浮点数

来自分类Dev

将浮点数转换为整数

来自分类Dev

将分数转换为浮点数

来自分类Dev

将整数转换为浮点数

来自分类Dev

将列表字符串转换为浮点数列表[pandas]

来自分类Dev

为什么Pandas数据框将整数转换为浮点数据类型

来自分类Dev

将浮点数转换为RGBA CSS颜色的有效Alpha值

来自分类Dev

将无符号长整数转换为带有2个精度十进制值的浮点数

来自分类Dev

如何将GEKKO中的值转换为浮点数

来自分类Dev

将键值对中的基于整数的值显示为浮点数(带有 % 符号)(Python)

来自分类Dev

如何在保持其含义的同时将这些包含字符串的 Pandas 列转换为浮点数?

来自分类Dev

将列中的-ve值替换为pandas中的NaN

来自分类Dev

将浮点数的二维数组转换为布尔值

来自分类Dev

无法将类型“浮点数”的值转换为预期参数“ CGFloat”

来自分类Dev

将浮点数转换为其IEEE(32位)值

来自分类Dev

C ++将4个十六进制值转换为浮点数

来自分类Dev

值错误:无法将字符串转换为浮点数:'−4.0'

Related 相关文章

  1. 1

    pandas DataFrame Combine_first方法将浮点数转换为布尔值

  2. 2

    将列中的字符串十进制数转换为 Pandas DataFrame 中的浮点数

  3. 3

    将 Pandas 数据框中带逗号的值转换为浮点数。

  4. 4

    Pandas DataFrame:无法将字符串转换为浮点数

  5. 5

    将浮点数转换为具有数字和nan的列的整数

  6. 6

    将Pandas DataFrame中的列值与“ NaN”值连接

  7. 7

    将Pandas DataFrame中的列值与“ NaN”值连接

  8. 8

    Python-将美元值转换为浮点数

  9. 9

    无法将字符串转换为浮点数 - 不是数字 (NaN)

  10. 10

    带有字符串和浮点数的Pandas Dataframe列

  11. 11

    尝试将数据框列除以浮点数会产生NaN

  12. 12

    将timedelta转换为浮点数

  13. 13

    将数据转换为浮点数

  14. 14

    将浮点数转换为整数

  15. 15

    将分数转换为浮点数

  16. 16

    将整数转换为浮点数

  17. 17

    将列表字符串转换为浮点数列表[pandas]

  18. 18

    为什么Pandas数据框将整数转换为浮点数据类型

  19. 19

    将浮点数转换为RGBA CSS颜色的有效Alpha值

  20. 20

    将无符号长整数转换为带有2个精度十进制值的浮点数

  21. 21

    如何将GEKKO中的值转换为浮点数

  22. 22

    将键值对中的基于整数的值显示为浮点数(带有 % 符号)(Python)

  23. 23

    如何在保持其含义的同时将这些包含字符串的 Pandas 列转换为浮点数?

  24. 24

    将列中的-ve值替换为pandas中的NaN

  25. 25

    将浮点数的二维数组转换为布尔值

  26. 26

    无法将类型“浮点数”的值转换为预期参数“ CGFloat”

  27. 27

    将浮点数转换为其IEEE(32位)值

  28. 28

    C ++将4个十六进制值转换为浮点数

  29. 29

    值错误:无法将字符串转换为浮点数:'−4.0'

热门标签

归档