現在、複数の行を含む地震探査ファイルのショットポイント間の距離を計算しようとしています。現在のコードは次のとおりです。パンダの2列にわたるif文を使用
def Delimiter(Filename, a, b, c, d, e, f):
data = pd.read_fwf(Filename, names=[a, b ,c ,d ,e ,f ], header=None)
data['lineshift'] = data['line'].shift(-1)
data['bool'] = data['lineshift'] == data['line']
for _, row in data.iterrows():
data['SPDIF'] = np.abs(data['sp'].astype(float) - data['sp'].astype(float).shift(-1))
data['XDIFF'] = data['X'] - data['X'].shift(-1)
data['YDIFF'] = data['Y'] - data['Y'].shift(-1)
data['XYDIFF'] = np.sqrt(data['XDIFF']**2 + data['YDIFF']**2)
data['SPDIST'] = data['XYDIFF']/data['SPDIF']
if row['line'] != row['lineshift']:
data['SPDIF'] = data['SPDIF'].replace({0: np.nan})
data['XDIFF'] = data['XDIFF'].replace({0: np.nan})
data['YDIFF'] = data['YDIFF'].replace({0: np.nan})
data['XYDIFF'] = data['XYDIFF'].replace({0: np.nan})
data['SPDIST'] = data['SPDIST'].replace({0: np.nan})
data.info()
print data
Delimiter(os.path.splitext(x)[0] + ".csv", "line", "sp", "Xcoord", "Ycoord", "X", "Y")
このコードは、ショットポイントデータを含むCSVをパンダデータフレームに読み込みます。しかし、コードが異なる行の2つのショットポイントの間の距離を計算していないかどうかをチェックしたいと思います。 'line'列が同じ行の 'lineshift'列と異なる場合は、N/Aを表示します。同じ場合は、その特定の行に対して5つの新しい列を計算する必要があります。可能であれば
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
、私はこのコードの実行を作成し、すべての行をチェックするために追加して何が必要でしょう:私はこのコードを実行すると
はしかし、それは次のエラーを与えますか?
CSVファイルのデータの例:
line sp ycoord xcoord x y lineshift
8 761298 1080 521754.1N 65132.6E 255355 479838 761298 True
9 761298 1090 5218 2.5N 65154.3E 255760 480107 761298 True
10 761298 1100 521812.1N 65216.0E 256165 480410 761298 True
11 761298 1110 521820.7N 65236.8E 256554 480685 771022 False
12 771022 1020 521835.8N 65238.3E 256573 481153 771022 True
13 771022 1030 521841.0N 65245.2E 256700 481315 771022 True
14 771022 1040 521845.8N 65252.2E 256830 481466 771022 True
[「lineshift」] ==行[「行は」]:私は次のエラーを与える:TypeError例外を:タプルインデックスは、これはあなたが報告されたエラーを修正すること – BHaag
注意をstrない、整数でなければなりません。 if/elseステートメント内のコードにはまだまだいくつかの作業が必要です。 – IanS
ええ、今実行されているようですが、行が一致しない値のどれも置き換えられません。複数の列の行の値を0またはn/aに設定する方法を知っていますか?私の現在のコードをポスト – BHaag