【问题标题】:Python: How to remove dict entries based on number of rows in each entryPython:如何根据每个条目中的行数删除 dict 条目
【发布时间】:2020-03-13 17:21:15
【问题描述】:

我通过使用基于列值对它们进行分组,从一个大数据框创建了一个小数据框字典;

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

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

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

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

感谢任何帮助,谢谢。

【问题讨论】:

  • 使用lendict2 = {k: v for k, v in dict1.items() if len(v) &gt;=20}
  • 这最适合我想做的事情。谢谢@James

标签: python dataframe dictionary


【解决方案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)
{}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多