質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

6829閲覧

csvファイルをインポートし処理をしようとするとobject of type 'float' has no len()とエラーがでる

退会済みユーザー

退会済みユーザー

総合スコア0

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2019/01/24 02:26

#####文字列だけが入ったcsvファイルをインポートし、予め用意していたコード(文字列の長さ比較)を使って処理をしようとすると、object of type 'float' has no len() とエラーがでてしまう。処理前にデータの型を確認するとオブジェクトなのですがなぜエラーがでたのか分からないのです。

#####別ファイル(今回と同様にcsv、カンマ区切り、文字列のみ)を同じコードで処理したときには問題なくできたので、コードの問題ではないと思うのですが?

python3

1import pandas as pd 2csv_df=pd.read_csv('dataset/CHECK_0000.csv',sep=',',encoding='cp932', header=0,dtype=str) 3#外字が含まれるため、cp932を指定。 4csv_df.info() 5#インポートしたデータの型を確認 6#結果↓ 7  <class 'pandas.core.frame.DataFrame'> 8  RangeIndex: 186543 entries, 0 to 186542 9  Data columns (total 10 columns): 10  ID 186543 non-null object 11  NAME 186543 non-null object 12  AD 186543 non-null object 13  CD1 172483 non-null object 14  KJ1 172482 non-null object 15  AD1 172482 non-null object 16  KJ2 178316 non-null object 17  AD2 123382 non-null object 18  HJK 174068 non-null object 19  FLG 186543 non-null object 20  dtypes: object(10) 21  memory usage: 14.2+ MB 22#全てobject。 23 24NAME = csv_df['NAME'] 25AD = csv_df['AD'] 26KJ1 = csv_df['KJ1'] 27AD1 = csv_df['AD1'] 28KJ2 = csv_df['KJ2'] 29AD2 = csv_df['AD2'] 30# 比較のため、特定列を取得 31from lib.string_check import lcs 32# コードを呼び出し 33lcs_list = [] 34%%time 35lcs_list = [] 36for qs_a, an_a in zip(NAME.values, KJ1.values): 37 lcs_list.append(1 - lcs(qs_a, an_a) / len(an_a)) 38 39#結果↓ 40  TypeError Traceback (most recent call last) 41  <timed exec> in <module>() 42 43  ~\Desktop\distribute_190123\lib\string_check.py in lcs(s1, s2) 44    47 対象文字列 45    48 """ 46  ---> 49 n, m = len(s1), len(s2) 47    50 48    51 dp = [[0] * (m+1) for _ in range(n+1)] 49 50  TypeError: object of type 'float' has no len()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

s1,s2がFloat型だからです(浮動小数点)
どうしても長さを知りたいなら、下記の様に変更してください

Python

1n, m = len(str(s1)), len(str(s2))

投稿2019/01/24 03:16

編集2019/01/24 03:16
yamato_user

総合スコア2321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/01/24 04:17

早速ありがとうございます!試してみたところ、別のエラーがでてしまいました。引き続きアドバイスいただけますと助かります。よろしくお願いします。 TypeError Traceback (most recent call last) <timed exec> in <module>() ~\Desktop\distribute_190123\lib\string_check_190124.py in lcs(s1, s2) 54 for i in range(1, n+1): 55 for j in range(1, m+1): ---> 56 if s1[i-1] == s2[j-1]: 57 dp[i][j] = dp[i-1][j-1] + 1 58 lcs = max(dp[i][j], lcs)   59 else: 60 dp[i][j] = 0 61 return lcs TypeError: 'float' object is not subscriptable
yamato_user

2019/01/24 04:34

if s1[i-1] == s2[j-1]: を if str(s1)[i-1] == str(s2)[j-1]: に変換 でも、また別のエラーが出るかも そもそものプログラムの書き方とか文法を理解されていないようなので、テキスト買って勉強しなおした方がいいかと思われます
退会済みユーザー

退会済みユーザー

2019/01/28 00:13

人からもらったコードをそのまま言われたまま作業で使っていたもので…おっしゃる通りど素人です。 作業手順を習ったとき今回と同じstrings型のCSVファイルにたいして、コードをstr指定しなくても問題なく処理できたので、コードの問題ではないと思っていたのですが…。ど素人になんどもアドバイスありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問