如何使用列表推导来将数据框与valuecounts组合在一起


make     year
honda    2011
honda    2011
honda    n/a
toyota   2011
toyota   2022

我试图得到列表的make有值计数大于2下面是代码:

list = [I for I in df.make.unique() if df.loc[df.make==I, 'make'].value_counts()>2]

由于某些原因,我得到以下错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
vc = df['make'].value_counts()
vc[vc>2].index.to_list()

o/p:

['honda']

关于你的错误:

[I for I in df.make.unique() if (df.loc[df.make==I, 'make'].value_counts()>2).values[0]]

count就足够了

lst = [I for I in df.make.unique() if df.loc[df.make==I, 'make'].count()>2]

也可以使用

lst = df.value_counts('make')[df.value_counts('make')>2].index.tolist()
print(lst)
['honda']

还有另一种方法

df = data.groupby("make")['make'].count().to_frame(name='cnt').reset_index()
df[df.cnt > 2]['make'].to_list()

返回一个列表

['honda']

最新更新