我的数据集如下:我要过滤行,其中计数值等于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
任何建议?
在您的代码中,问题与此部分df1.count
有关。实际上,熊猫是一种方法count()
,用于计数no。在给定轴上的非NA/NULL观测值。
在您的代码中,它返回了这样的东西,
<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
计数也是 pandas
dataframe的方法。
做df.count
时,Pandas知道您正在调用count()
方法,而不是拿出恰好具有相同名称的列。执行df["count"]
可以解决您的问题。
这样做的标准方法是执行以下操作:
解决方案1
df1[df1["count"]=='1']
解决方案2 但是,如果您确实想获取布尔值列表,则可能需要使用lambdas:
booleans = list(df1['count'].apply(lambda x:x=='1').values)
然后,您可以使用此列表来获得您想要的结果:
df1[booleans]
这基本上与解决方案1。