gpt4 book ai didi

python - 在 Pandas 数据框中使用字数统计来删除只有一个字的行

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:00 25 4
gpt4 key购买 nike

我有一个包含 2 条记录的数据框(数据):

id    text
0001 The farmer plants grain
0002 tuna

我想计算此数据框的 text 列中的单词数,并删除只有一个单词的行。

我知道如何统计字数:

count = data['text'].str.split().str.len()

如何使用结果来运行 IF 语句来删除数据框中的行?任何 IF 语句,例如...

if count == 1:
print('drop')

...导致此错误:

Traceback (most recent call last):

File "<ipython-input-118-b3fcb0218e8e>", line 32, in <module>
if count == 1:

File "C:\Users\taca\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\generic.py", line 917, in __nonzero__
.format(self.__class__.__name__))

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我已经阅读了 Pandas 文档和其他有关此错误的 SO 问题,但我似乎无法获得解决方案以正确应用于我的 IF 语句问题。

非常感谢任何建议!由于我对 SO 比较陌生,如果我能做些什么来改进我的问题,请告诉我。

最佳答案

使用面具:

dropped = data[~(count==1)].copy()

解释:

所以假设一个 df 这样的有:

data = pd.DataFrame({'text': ['hello my name is','hey']})

使用您的计数方法,您可以检查它是否 =1,创建一个 bool 掩码:

count = data['text'].str.split().str.len()
~(count==1)
Out[18]:
0 True
1 False
Name: text, dtype: bool

现在你可以应用那个面具了:

data[~(count==1)]
Out[22]:
text
0 hello my name is

关于python - 在 Pandas 数据框中使用字数统计来删除只有一个字的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43943532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com