0
私は今2日間処理していて問題があります。また、StackOverflowでのドキュメントと同様の質問に対する回答を読んだとしても、解決策はありません。パンダのデータフレームに行をドロップする
私は質問のペアを持つデータセットを持っていますが、私は重複してラベルを付けるべきですか。トレーニングデータセットで、私はクリーニングとベクトル化を実装しました - word2vec。残念なことに、一部の行では、word2vecはクリーニング後に単語を持たないため、emply value(nan)を返します。
私はこの行を削除しようとしていますが、単純に機能しません。
LEN = len(train1)
print("Innitial lenght: ")
print(len(train1))
print("Empty rows: ")
for i in range(0, LEN):
if ((type(train1['q1_vec'][i]) != np.ndarray) or (type(train1['q2_vec'][i])!= np.ndarray)):
print(i)
train1.drop(train1.index[i])
print("Lenght after cleaning")
print(len(train1))
私は結果を得た:
Innitial lenght:
258528
Empty rows:
29296
59523
80284
...
219103
Lenght after cleaning
258528
私が何かを落としていないと私は距離の任意の関数を適用することができないことを意味し、そのようscipy.spatial.distance.euclidean
などなど
私はラムダ関数を試してみましたが、成功しなかった。
train1['euclidean'] = train1.apply(lambda row: dist.euclidean(row['q1_vec'], row['q2_vec']) if ((type(row['q1_vec']) == np.ndarray) or (type(row['q2_vec']) == np.ndarray)) else None, axis=1)
お勧めはありますか?
'train1.drop(train1.index [i]、inplace = True)'を使用しようとしましたか?操作がインプレースになっているはずがない場合、PandasはDataFramesのコピーを作成します。 – Mephy
この場合、[この質問](https://stackoverflow.com/questions/43667979/pandas-drop-function-not-working-in-a-for-loop)の複製としてマークすることができます。 。両方の答えが問題を解決するでしょう。 – Mephy
ループ中にインデックスが崩れます。それは行を削除した後、 "KeyError:29296L"というエラーを出します。 – melania