Không thể chuyển đổi chuỗi thành float Python csv

Liên kết màn hình

Mã của tôi

laptops.rename[{"weight":"weight_kg"},axis=1,inplace=True]
laptops["weight_kg"]=laptops["weight_kg"].str.replace["kg",""].str.replace["kgs",""].astype[float]
laptops.to_csv['laptops_cleaned.csv',index=False]

Điều tôi mong đợi sẽ xảy ra.
Mã của tôi gần giống với câu trả lời được viết cho thử thách này, ngoại trừ việc tôi đã thay đổi tên của cột trước và cố gắng thay đổi kiểu dữ liệu của cột.

Điều gì đã thực sự xảy ra.
Vì mã giống hệt với câu trả lời, đặc biệt là dòng thứ hai nơi loại dữ liệu cho trọng lượng cột đang được chuyển đổi, tôi mong đợi nó sẽ chuyển đổi suôn sẻ thành float từ chuỗi.

ValueErrorTraceback [most recent call last]
 in []
      1 laptops.rename[{"weight":"weight_kg"},axis=1,inplace=True]
----> 2 laptops["weight_kg"]=laptops["weight_kg"].str.replace["kg",""].str.replace["kgs",""].astype[float]
      3 laptops.to_csv['laptops_cleaned.csv',index=False]
ValueError: could not convert string to float: '4s'

Tôi đang cố gắng tạo tập dữ liệu tùy chỉnh của riêng mình để đào tạo mô hìnhefficiencydet_lite3, nhưng khi tôi chạy mã này [Tệp csv dữ liệu có cùng định dạng với định dạng được chỉ định trên liên kết này TensorFlow Lite Model Maker를 사용한 객체 감지]

train_data, validation_data, test_data = object_detector. Trình tải dữ liệu. from_csv[‘dữ liệu. csv']

Lỗi mà tôi nhận được từ đoạn mã trên

Traceback [cuộc gọi gần đây nhất gần đây nhất].
Tệp “”, dòng 1, trong
Tệp “/Applications/PyCharm CE. ứng dụng/Nội dung/plugin/python-ce/helpers/pydev/_pydev_bundle/pydev_umd. py”, dòng 197, trong tệp thực thi
pydev_imports. execfile[filename, global_vars, local_vars] # thực thi tập lệnh
Tệp “/Applications/PyCharm CE. ứng dụng/Nội dung/plugin/python-ce/helpers/pydev/_pydev_imps/_pydev_execfile. py”, dòng 18, trong execfile
exec[compile[contents+"\n", file, 'exec'], glob, loc]
File “/ . py”, dòng 23, trong
train_data, validation_data, test_data = object_detector. Trình tải dữ liệu. from_csv[‘dữ liệu. csv’]
Tệp “/Users/maryam/PycharmProjects/sp/venv/lib/python3. 8/site-gói/tensorflow_examples/lite/model_maker/core/data_util/object_detector_dataloader. py”, dòng 292, trong from_csv
cache_writer. write_files[cache_files, csv_lines=csv_lines]
Tệp “/Users/maryam/PycharmProjects/sp/venv/lib/python3. 8/site-gói/tensorflow_examples/lite/model_maker/core/data_util/object_detector_dataloader_util. py”, dòng 247, trong write_files
cho idx, xml_dict trong liệt kê[self. _get_xml_dict[*args, **kwargs]].
Tệp “/Users/maryam/PycharmProjects/sp/venv/lib/python3. 8/site-gói/tensorflow_examples/lite/model_maker/core/data_util/object_detector_dataloader_util. py”, dòng 380, trong _get_xml_dict
xml_dict = _get_xml_dict_from_csv_lines[self. images_dir, image_filename,
Tệp “/Users/maryam/PycharmProjects/sp/venv/lib/python3. 8/site-gói/tensorflow_examples/lite/model_maker/core/data_util/object_detector_dataloader_util. py”, dòng 337, trong _get_xml_dict_from_csv_lines
xmin, ymin = float[line[3]] * width, float[line[4]] * height
ValueError. không thể chuyển đổi chuỗi thành float. ‘’

Có một câu trả lời có thể cho vấn đề này?

Cảm ơn bạn

Lỗi này thường xảy ra khi bạn cố gắng chuyển đổi một chuỗi thành float trong pandas, nhưng chuỗi đó chứa một hoặc nhiều nội dung sau
  • không gian
  • dấu phẩy
  • Ký tự đặc biệt

Khi điều này xảy ra, trước tiên bạn phải xóa các ký tự này khỏi chuỗi trước khi chuyển đổi thành dấu phẩy

Ví dụ sau đây cho thấy cách giải quyết lỗi này trong thực tế

Cách tạo lại lỗi

Giả sử chúng ta có DataFrame gấu trúc sau

import pandas as pd

#create DataFrame
df = pd.DataFrame[{'store': ['A', 'B', 'C', 'D'],
                   'revenue': ['$400.42', '$100.18', '$243.75', '$194.22']}]

#view DataFrame
print[df]

  store  revenue
0     A  $400.42
1     B  $100.18
2     C  $243.75
3     D  $194.22

#view data type of each column
print[df.dtypes]

store      object
revenue    object
dtype: object

Bây giờ, giả sử chúng tôi cố gắng chuyển đổi cột doanh thu từ một chuỗi thành một số float

#attempt to convert 'revenue' from string to float
df['revenue'] = df['revenue'].astype[float]

ValueError: could not convert string to float: '$400.42' 

Chúng tôi gặp lỗi do cột doanh thu chứa ký hiệu đô la trong chuỗi

Cách khắc phục lỗi

Cách xử lý lỗi này là sử dụng hàm replace[] để thay thế các ký hiệu đô la trong cột doanh thu bằng không trước khi thực hiện chuyển đổi

#convert revenue column to float
df['revenue'] = df['revenue'].apply[lambda x: float[x.split[][0].replace['$', '']]]

#view updated DataFrame
print[df]

  store  revenue
0     A   400.42
1     B   100.18
2     C   243.75
3     D   194.22

#view data type of each column
print[df.dtypes]

store       object
revenue    float64
dtype: object

Lưu ý rằng chúng tôi có thể chuyển đổi cột doanh thu từ một chuỗi thành một số float và chúng tôi không nhận được bất kỳ lỗi nào vì chúng tôi đã xóa các ký hiệu đô la trước khi thực hiện chuyển đổi

Tại sao tôi không thể chuyển đổi chuỗi thành dấu phẩy trong Python?

Theo các quy tắc được xác định bởi ngôn ngữ lập trình Python, một chuỗi có thể được chuyển đổi thành kiểu dữ liệu dấu phẩy động nếu nó chỉ chứa số. Nếu nó chứa bất kỳ ký tự nào khác như dấu phẩy, dấu cách hoặc một số ký tự khác thì chúng tôi phải đối mặt với valueerror i. e. "không thể chuyển đổi chuỗi thành float".

Làm cách nào để chuyển đổi chuỗi chuỗi thành float trong Python?

Nếu bạn muốn chuyển đổi một chuỗi thành float bằng NumPy, bước đầu tiên sẽ là nhập thư viện NumPy bằng cách sử dụng “nhập NumPy dưới dạng np. ” Sau đó, bạn có thể sử dụng phương thức “astype”, một phương thức trong bản dựng được sử dụng để chuyển đổi chuỗi thành giá trị dấu phẩy động trong python .

Làm cách nào để chuyển đổi chuỗi thành float trong học máy?

hàm float[] là cách phổ biến nhất để chuyển đổi chuỗi thành giá trị float. Hàm float nhận tham số y, là một chuỗi, sau đó sẽ chuyển đổi chuỗi thành giá trị float và trả về giá trị float của nó.

Bạn có thể chuyển đổi chuỗi thành int hoặc float không?

Chúng ta có thể chuyển đổi một số nguyên hoặc chuỗi cụ thể thành số dấu phẩy động bằng cách sử dụng phương thức tích hợp sẵn của python có tên là phương thức float[] . Phương thức float[] lấy kiểu dữ liệu chuỗi hoặc số nguyên và chuyển đổi dữ liệu đã cho thành số dấu phẩy động. Tham số giá trị là tùy chọn.

Chủ Đề