删除pandas数据帧中的行

时间:2017-11-30 11:15:01

标签: python pandas dataframe

我有一个问题,我现在已经处理了2天,即使我在StackOverflow上阅读文档和类似问题的答案,我也无法找到解决方案。

我有一对包含问题的数据集,我应该标记重复或不重复。在训练数据集上,我实现了清理和矢量化 - word2vec。不幸的是,对于某些行,word2vec返回emply值(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等。

我尝试使用Lambda函数,但也没有成功。

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)

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

使用参数inplace=true将有助于内联删除记录。例如:

df.drop(df.index[i], inplace=True)