如何在数据框中创建从列值的字符串列表

发布于 2025-02-14 01:27:29 字数 558 浏览 1 评论 0原文

我有此数据框架:

Text     feat1   feat2   feat3    feat4
string1    1       1       0        0
string2    0       0       0        1
string3    0       0       0        0

我想以这种方式创建其他两个列:

Text     feat1   feat2   feat3    feat4     all_feat            count_feat
string1    1       1       0        0       ["feat1","feat2"]       2
string2    0       0       0        1       ["feat4"]               1
string3    0       0       0        0       []                      0

在朱莉娅(Julia)做什么的最佳方法是什么?

I have this dataframe:

Text     feat1   feat2   feat3    feat4
string1    1       1       0        0
string2    0       0       0        1
string3    0       0       0        0

I want to create 2 other columns this way:

Text     feat1   feat2   feat3    feat4     all_feat            count_feat
string1    1       1       0        0       ["feat1","feat2"]       2
string2    0       0       0        1       ["feat4"]               1
string3    0       0       0        0       []                      0

What's the best approach to do it in Julia?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深者入戏 2025-02-21 01:27:29

这是这样做的可能方法之一:

julia> df
3×5 DataFrame
 Row │ Text     feat1  feat2  feat3  feat4
     │ String   Int64  Int64  Int64  Int64
─────┼─────────────────────────────────────
   1 │ string1      1      1      0      0
   2 │ string2      0      0      0      1
   3 │ string3      0      0      0      0

julia> transform(df,
                 AsTable(r"feat") =>
                 ByRow(x -> [string(k) for (k,v) in pairs(x) if v == 1]) =>
                 :all_feat,
                 r"feat" => (+) => :count_feat)
3×7 DataFrame
 Row │ Text     feat1  feat2  feat3  feat4  all_feat            count_feat
     │ String   Int64  Int64  Int64  Int64  Array…              Int64
─────┼─────────────────────────────────────────────────────────────────────
   1 │ string1      1      1      0      0  ["feat1", "feat2"]           2
   2 │ string2      0      0      0      1  ["feat4"]                    1
   3 │ string3      0      0      0      0  String[]                     0

Here is one of possible ways to do it:

julia> df
3×5 DataFrame
 Row │ Text     feat1  feat2  feat3  feat4
     │ String   Int64  Int64  Int64  Int64
─────┼─────────────────────────────────────
   1 │ string1      1      1      0      0
   2 │ string2      0      0      0      1
   3 │ string3      0      0      0      0

julia> transform(df,
                 AsTable(r"feat") =>
                 ByRow(x -> [string(k) for (k,v) in pairs(x) if v == 1]) =>
                 :all_feat,
                 r"feat" => (+) => :count_feat)
3×7 DataFrame
 Row │ Text     feat1  feat2  feat3  feat4  all_feat            count_feat
     │ String   Int64  Int64  Int64  Int64  Array…              Int64
─────┼─────────────────────────────────────────────────────────────────────
   1 │ string1      1      1      0      0  ["feat1", "feat2"]           2
   2 │ string2      0      0      0      1  ["feat4"]                    1
   3 │ string3      0      0      0      0  String[]                     0
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文