我有一个数据集,如下所示: 我将过滤计数值等于1的行。
index count
1 4
2 5
3 1
4 1
这是我的代码:
booleans =[]
for number in df1.count:
if number ==1:
booleans.append (True)
else:
booleans.append (False)
但是出现此错误:
'method' object is not iterable
我也尝试过:
df[df.count==1]
但是我遇到以下错误:
KeyError: False
有什么建议吗?
答案 0 :(得分:2)
Count 也是pandas
DataFrame的一种方法。
当您执行df.count
时,pandas知道您正在调用count()
方法,而不是获取碰巧具有相同名称的列。进行df["count"]
可以解决您的问题。
答案 1 :(得分:1)
在您的代码中,问题出在这部分df1.count
上。实际上,熊猫具有count()
方法,该方法用于计算编号。给定轴上的非NA /空观测值的数量。
在您的代码中,它返回类似这样的内容
<bound method DataFrame.count of index count
0 1 4
1 2 5
2 3 1
3 4 1>
您可以使用df[df['count']=='1']
来获取所需的内容。
import pandas as pd
data = {"index":['1','2','3','4'],
"count":['4','5','1','1']}
df = pd.DataFrame(data)
indexes = df[df['count']=='1']
print(indexes)
输出
index count
2 3 1
3 4 1
答案 2 :(得分:1)
执行此操作的标准方法是:
解决方案1
df1[df1["count"]=='1']
解决方案2 但是,如果您确实想要获取布尔值列表,则可能需要使用lambda:
booleans = list(df1['count'].apply(lambda x:x=='1').values)
然后您可以使用此列表获取所需的结果,如下所示:
df1[booleans]
这与解决方案1基本相同。