登录
首页 >  Golang >  Go问答

筛选golang数据框中特定列的方法

来源:stackoverflow

时间:2024-02-15 09:48:22 331浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《筛选golang数据框中特定列的方法》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

输入样本:

name,price,pay_time,refund_time
job,19.0,20220622 12:23:23,20220622 13:23:23
kim,0,20220623 12:23:23,20220623 13:23:23

预期样本:

name,price,finnal_time
job,19.0,20220622 12:23:23
kim,0,20220623 13:23:23

规则是一旦价格等于0,我们将使用refund_time作为final_time,否则,将使用pay_time

目前我使用 https://github.com/go-gota/gota 来做到这一点 我的代码如下所示:

package frame

import (
    "fmt"
    "github.com/go-gota/gota/dataframe"
    "github.com/go-gota/gota/series"
    "strings"
)

func loadcsv() {
    csvstr := `
name,price,pay_time,refund_time
job,19.0,20220622 12:23:23,20220622 13:23:23
kim,0,20220623 12:23:23,20220623 13:23:23
`
    df := dataframe.readcsv(strings.newreader(csvstr))
    df = df.filter(dataframe.f{colname: "price", comparator: series.eq, comparando: 0})
    fmt.println("df -->", df)
}

但是输出是:

name     price    pay_time          refund_time
 0: kim      0.000000 20220623 12:23:23 20220623 13:23:23
                 

另一行被删除,不是我想要的。


正确答案


它满足您的要求吗?

package main

import (
    "fmt"
    "strings"

    "github.com/go-gota/gota/series"

    "github.com/go-gota/gota/dataframe"
)

func main() {
    csvStr := `
name,price,pay_time,refund_time
job,19.0,20220622 12:23:23,20220622 13:23:23
kim,0,20220623 12:23:23,20220623 13:23:23
`
    df := dataframe.ReadCSV(strings.NewReader(csvStr))
    df = df.Filter(dataframe.F{Colname: "price", Comparator: series.GreaterEq, Comparando: 0})

    var (
        finalTimeList []string
    )

    for i := 0; i < df.Nrow(); i++ {
        payTime := df.Elem(i, 2).Val().(string)
        price := df.Elem(i, 1).Val().(float64)
        if price == 0 {
            payTime = df.Elem(i, 3).Val().(string)
        }
        finalTimeList = append(finalTimeList, payTime)
    }
    df = df.Mutate(series.New(finalTimeList, series.String, "final_time"))
    df = df.Drop([]string{"pay_time", "refund_time"})
    fmt.Println("df -->", df)
}

今天关于《筛选golang数据框中特定列的方法》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>