在经历了许多错误、异常和高血压之后,我终于想出了这个解决方案,它可以满足我的需要:基本上,我需要计算所有符合特定条件的列值
假设我有一个字符串列表,就像
vehicle = ['car', 'boat', 'car', 'car', 'bike', 'tank', 'DeLorean', 'tank']
我想计算哪些值出现2次以上
认为基于列表的数据文件的列名是“VEH”。
因此,这段代码是有效的:
df['veh'].value_counts()[df['veh'].value_counts() > 2]
问题是[df['veh'].value_counts() > 2]
部分为什么紧跟在value_counts()
的“()”之后?没有“.”或任何其他可能意味着什么的链接符号
如果我使用代码
df['classi'].value_counts() > 1
(这将是我有限的大脑可以抽象的逻辑合成器),它返回布尔值
有人能帮我理解熊猫背后的逻辑吗
我很确定熊猫是很棒的,问题就在我这边,但我真的很想了解它。我已经阅读了很多资料(包括文档),但找不到解决我这个差距的办法
提前谢谢你
逻辑是,您可以使用相同大小的布尔序列对序列进行切片:
或同等地
这也被称为boolean indexing
现在,您的代码相当于:
然后是前两行中的任何一行,例如
s[s>2]
下面的代码行
返回一个系列,其中键作为索引,出现次数作为值
方括号[]之间的所有内容都是熊猫系列关键帧上的过滤器。所以
应返回“veh”列中“car”一词的出现次数。这相当于系列
df['veh'].value_counts()
上键“car”的对应值熊猫系列也接受键列表作为索引,所以
应分别返回单词“car”和“boat”的出现次数
此外,如果布尔值列表与序列长度相同,则序列接受布尔值列表作为键。也就是说,它接受一个布尔掩码
当你写作时
将
df['veh'].value_counts()
上的每个值与数字2进行比较。这将为每个值返回一个布尔值,即布尔掩码因此,可以将布尔掩码用作所创建序列的过滤器。因此
返回出现次数大于2的关键点的所有出现次数
相关问题 更多 >
编程相关推荐