【问题标题】:How to filter NA values in columns of pydatatable?如何过滤数据表列中的NA值?
【发布时间】:2020-05-23 12:53:04
【问题描述】:

我有一个数据表,

DT_EX= dt.Frame({
               'country':['a','a','a','a'],
               'id':[3,3,3,3],
               'shop':['dmart','dmart','dmart','dmart'],
               'beef':[23,None,None,None],
               'eggs':[None,33,None,None],
               'fork':[None,None,10,None],
               'veg':[None,None,None,40]})

它的输出是,

我想将其转换为列中不应包含 NA 的数据表,如此输出所示,

您能否解释一下如何在 py-datatable 上执行此操作(删除 NA)? dt.isna() 在这种情况下会有帮助吗?

【问题讨论】:

    标签: python py-datatable


    【解决方案1】:

    一种解决方法是选择前三列(它们没有空值)并用剩余列的总和对其进行扩展:link

    from datatable import f, first, sum
    
    DT_EX[:,first(f[:3]).extend(sum(f[3:]))]
    
        country id  shop    beef    eggs    fork    veg
    ▪▪▪▪    ▪▪▪▪    ▪▪▪▪    ▪▪▪▪▪▪▪▪    ▪▪▪▪▪▪▪▪    ▪▪▪▪▪▪▪▪    ▪▪▪▪▪▪▪▪
    0   a   3   dmart   23  33  10  40
    

    更新:另一个相关问题的更简单的解决方案:

    DT_EX[:, sum(f[3:]), f[:3])]
    

    【讨论】:

    • 嗨 @sammywemmy 看起来你在 COLAB 笔记本中使用 pydatatable,当你执行代码块时,它是否显示数据表的两种输出格式?还是单人?对我来说,它提供了两种格式。我认为在你上面提到的输出中,它是一种单一的输出格式。你能告诉我你是怎么做到的吗?
    • 它给了我一个单一的格式。我使用 jupyter 笔记本
    • 哦,好吧,它也在 Jupyter 笔记本中给了我一个输出。但是当谈到 colab notebook 时,它会打印两个输出,您可以尝试一次吗?。
    • 我很少使用 colab。当我有时间的时候,我会试试看
    【解决方案2】:

    所以我还有一个项目子组,这是一个新的 DT。

    DT_EX= dt.Frame({
    'country':['a','a','a','a','b','b','c','c'],
    'id':[3,3,3,3,4,4,4,4],
    'shop':['dmart','dmart','dmart','dmart','amzn','amzn','amzn','amzn'],
    'beef':[23,None,None,None,93,None,None,None],
    'eggs':[None,33,None,None,None,103,None,None],
    'fork':[None,None,10,None,None,None,210,None],
    'veg':[None,None,None,40,None,None,None,340]})
    

    我已尝试在其上应用推荐的逻辑,如所附屏幕截图所示,

    在第二个代码块中,它总结了每一列(牛肉、鸡蛋、叉子、蔬菜)

    并且在第三个代码块中,我对前三列进行了分组,这里它给出了正确的输出,但是它添加了重复的列,另一个观察是它用 0 填充 NA 值,它可以在 C 上找到观察。

    您还有其他想法/建议吗?

    【讨论】:

    • 嗨,你能把它设置为一个新问题吗?这也允许其他人看到并尝试。一旦我在我的电脑上,我会试一试
    • 好的,我会做的
    • 我刚刚将此作为一个新问题发布在 SO 上。
    猜你喜欢
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多