Python:如何根据每个条目中的行数删除字典条目

时间:2019-11-18 10:51:07

标签: python dataframe dictionary

我使用一个基于大型列的小数据框创建了一个字典,方法是根据列值使用;

dict1 = {k: v for k, v in df.groupby('Some Column Name')}

我想将这些传递给第二个Dictionary,并根据其中的行数删除Dataframe。例如,任何少于20行的数据框都应忽略。

我可以基于这样的值删除它们,但找不到直接引用行号的方法;

dict2 = {k: v for k, v in dict1.items() if v[0] <=20}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用df.shape [0]并使用已经编写的代码。 df.shape中的第一个值是行数,第二个值是列数

dict2 = {k: v for k, v in dict1.items() if df.shape[0]<21}

我已经创建了这个小数据框来向您展示:

数据框为:

df = pd.DataFrame([['ch',2],['bt',4],['ch',10],['bt',5],['aw',3]],columns=['code','freq'])
print(df.shape)
(5,2)  #5 rows is the upper limit

dict1 = {k: v for k, v in df.groupby('code') if df.shape[0]>2}  
print(dict1)

{'aw':   code  freq
4   aw     3, 'bt':   code  freq
1   bt     4
3   bt     5, 'ch':   code  freq
0   ch     2
2   ch    10}

dict1 = {k: v for k, v in df.groupby('code') if df.shape[0]>6}
print(dict1)
{}