でない数値である場合、私はデータフレームを有する:スキップ操作がパンダのデータフレーム
import pandas as pd
df = pd.DataFrame({'start' : [5, 10, '$%%', 20], 'stop' : [10, 20, 30, 40]})
df['length_of_region'] = pd.Series([0 for i in range(0, len(df['start']))])
を私が唯一の非ゼロ数字列値の領域の長さを計算し、と行の機能をスキップします値が正しくない場合はエラー・ノート。ここで私はこれまで持っているものです。
df['Notes'] = pd.Series(["" for i in range(0, len(df['region_name']))])
for i in range(0, len(df['start'])):
if pd.isnull(df['start'][i]) == True:
df['Notes'][i] += 'Error: Missing value for chromosome start at region %s, required value;' % (df['region_name'][i])
df['critical_error'][i] = True
num_error = num_error+1
else:
try:
#print (df['start'][i]).isnumeric()
start = int(df['start'][i])
#print start
#print df['start'][i]
if start == 0:
raise ValueError
except:
df['Notes'][i] += 'Error: Chromosome start should be a non zero number at region %s; ' % (df['region_name'][i])
#print df['start'][i]
df['critical_error'][i] = True
num_error = num_error+1
for i in range(0, len(df['start'][i])):
if df['critical_error'][i] == True:
continue
df['length_of_region'][i] = (df['stop'][i] - df['start'][i]) + 1.0
はしかし、pandas
はstr
変数にdf['start']
を変換し、私はそれを変換するためにint
を使用している場合でも、私は次のエラーを取得する:
df['length_of_region'][i] = (df['stop'][i] - df['start'][i]) + 1.0
TypeError: unsupported operand type(s) for -: 'numpy.int64' and 'str'
私はここで何が欠けていますか?御時間ありがとうございます!
こんにちは、ありがとうございました!私は、コードのアーキテクチャを大幅に変更せず、同様の形式でかなりの他の変数を計算しているのと同じフォーマットを続ける方法を探していました。 –