#####文字列だけが入った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()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/01/24 04:17
2019/01/24 04:34
退会済みユーザー
2019/01/28 00:13