繁体   English   中英

Pandas_select 基于列值从 dataframe 中选择行

[英]Pandas_select rows from a dataframe based on column values

我是 Python 的新手。 我有一个如下所示的数据框。 这是一个 CSV 文件。 我需要 select 所有包含频率值 0.8 和 0.6 的行。 我编写了如图所示的代码,但它抛出了一个错误。

df_new = df[df['频率'] == 0.8 & df['频率'] == 1.6 ]

下面是我收到的错误的最后一行。

“TypeError:无法使用 dtyped [float64] 数组和 [bool] 类型的标量执行 'rand_'”

我运行了下面的代码

df_new = df[(df['频率'] == 0.8) & (df['频率'] == 1.6)]

它没有显示任何错误但没有出现值。它只显示列的名称。请参阅 bwloe 图像

在此处输入图像描述

在此处输入图像描述

由于&==的优先级,您需要添加括号

df_new = df[(df['Frequency'] == 0.8) & (df['Frequency'] == 1.6) ]

在条件周围添加圆括号

df_new = df[ (df['Frequency'] == 0.8) & (df['Frequency'] == 1.6) ]

你想要这个吗?

df_new = df[df['Frequency'].isin([0.8,1.6])] 

它没有显示答案原因和条件不匹配。 使用OR代替AND

df_new = df[ (df['Frequency'] == 0.8) | (df['Frequency'] == 1.6) ]

您正在使用这就是为什么您得到一个空的dataframe 频率不能同时为 0.8 和 0.6。 使用| 反而。

尝试这个:

df = df[(df['Frequency'] == 0.8) | (df['Frequency'] == 0.6)]

或者

df = df[df["Frequency"].isin([0.6,0.8])]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM