【发布时间】:2022-01-10 06:32:33
【问题描述】:
我有一个操作需要从 R 中的 dplyr(和 stringr)转换为 python 中的 pandas。在 R 中这很简单,但我无法在 pandas 中绕开它。基本上,我需要按一个(或多个)列分组,然后将剩余的列连接在一起并用分隔符折叠它们。 R 有很好的矢量化 str_c 函数,它完全符合我的要求。
这是 R 代码:
library(tidyverse)
df <- as_tibble(structure(list(file = c(1, 1, 1, 2, 2, 2), marker = c("coi", "12s", "16s", "coi", "12s", "16s"), start = c(1, 22, 99, 12, 212, 199), end = c(15, 35, 102, 150, 350, 1102)), row.names = c(NA, -6L), class = "data.frame") )
df %>%
group_by(file) %>%
summarise(markers = str_c(marker,"[",start,":",end,"]",collapse="|"))
#> # A tibble: 2 × 2
#> file markers
#> <dbl> <chr>
#> 1 1 coi[1:15]|12s[22:35]|16s[99:102]
#> 2 2 coi[12:150]|12s[212:350]|16s[199:1102]
这里是python代码的开始。我认为agg 或transform 存在一些诡计,但我不确定如何组合和加入多个列:
from io import StringIO
import pandas as pd
s = StringIO("""
file,marker,start,end
1.f,coi,1,15
1.f,12s,22,35
1.f,16s,99,102
2.f,coi,12,150
2.f,12s,212,350
2.f,16s,199,1102
""")
df = pd.read_csv(s)
# ... now what? ...
【问题讨论】:
-
你也可以检查 siuba 或 dplython
标签: python r pandas dataframe dplyr