我有两列"感情"和"推文"。 情绪包含数字,推文字符串。 我有这两列的数据帧df。现在我想删除推文长度超过150个字母的所有行。
我可以通过以下方式删除X中的值:
X = df["x"]
X =[x for x in X if len(x)<151]
但这会使y值保持不变。
如果x长度超过150,如何删除x和y值(=整行)?
答案 0 :(得分:0)
使用.str.len
:
X = df[df['x'].str.len() <= 150]
作为boolean mask删除推文超出限制的行
示例:
In[66]:
df = pd.DataFrame({'sentiment':np.arange(5), 'tweets':['asdas','a','asdasdas','asdasdasdas','asdasdasdas']})
df
Out[66]:
sentiment tweets
0 0 asdas
1 1 a
2 2 asdasdas
3 3 asdasdasdas
4 4 asdasdasdas
In[67]:
X = df[df['tweets'].str.len() <=5]
X
Out[67]:
sentiment tweets
0 0 asdas
1 1 a
答案 1 :(得分:0)
你可以将两个列表压缩成第三个列表,所以它是一个两元组的列表。
>>>x = [1, 2, 3, 4]
>>>y = [9, 8, 7, 6]
>>>z = zip(x, y)
>>>z
[(1, 9), (2, 8), (3, 7), (4, 6)]
使用压缩列表,您可以执行类似的列表理解
X = df["x"] # tweets
Y = df["y"] # sentiments
Z = zip(x, y)
Z = [z for z in Z if len(z[0]) < 151]
要再次解压缩列表,您必须按照
的方式执行操作X = []
Y = []
for z in Z:
X.append(z[0])
Y.append(z[1])