如何搜索具有相同列值的行,如果不存在则插入行?

2024-10-03 15:32:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据集:

  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

对于第一列中的每一个值,我想搜索波段I、R和V是否存在。例如,在我的数据集中,4只具有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

Tags: 数据band波段periodnapvaluecvso
1条回答
网友
1楼 · 发布于 2024-10-03 15:32:06

(使用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

相关问题 更多 >