python - 如何搜索具有相同列值的行并在不存在时插入行?

标签 python r bash

我有以下数据集:

  CVSO Band   Period       pvalue
1    4    R 1.063372 5.383864e-03
2    4    V 1.652512 1.543246e-17
3   27    V 6.114795 2.174296e-12
4   24    I 7.163776 1.014593e-17
5   24    R 7.164236 0.000000e+00
6   24    V 7.171452 3.342914e-14

对于第一列中的每个值,我想搜索 Band I、R 和 V 是否存在。例如,在我的数据集中,4 只有 Band R 和 V,而 24 有所有三个波段。如果一个或多个波段不存在,我想添加一个 NA 行,以便获得以下输出:

  CVSO Band   Period       pvalue
1    4    I       NA           NA
2    4    R 1.063372 5.383864e-03
3    4    V 1.652512 1.543246e-17
4   27    I       NA           NA
5   27    R       NA           NA
6   27    V 6.114795 2.174296e-12
7   24    I 7.163776 1.014593e-17
8   24    R 7.164236 0.000000e+00
9   24    V 7.171452 3.342914e-14

最佳答案

(使用 R)这是一个可能的 data.table 解决方案

library(data.table)
lookup <- c("I", "R", "V")
res <- setDT(df)[, .SD[match(lookup, Band)] , by = CVSO][, Band := lookup]
res
#    CVSO Band   Period       pvalue
# 1:    4    I       NA           NA
# 2:    4    R 1.063372 5.383864e-03
# 3:    4    V 1.652512 1.543246e-17
# 4:   27    I       NA           NA
# 5:   27    R       NA           NA
# 6:   27    V 6.114795 2.174296e-12
# 7:   24    I 7.163776 1.014593e-17
# 8:   24    R 7.164236 0.000000e+00
# 9:   24    V 7.171452 3.342914e-14

关于python - 如何搜索具有相同列值的行并在不存在时插入行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31303953/

相关文章:

Python 多处理 - 了解每个进程进度的最佳方式

python - 如何在python中导入 Selenium WebElement

r - 使用 setView 更新 Leaflet Map Shiny Dashboard

r - 是否存在多值 purrr::pluck?

r - (tidyverse 方法)计算多列的 rowsum,其中要包含的列信息来自不同的数据框

linux - Linux 中的 for 循环在不存在文件时将模式视为文件名

linux - 在 Shell Script Linux 中重命名文件

MySQL 的 IFNULL 的 Python 等价物

bash - 如何将 bash 脚本的整个输出保存到文件

python - Python 基础问题 : referencing original variable inside for loop?