В R
мы можем сделать группу по paste
.(Обратите внимание, что в вопросе был тег R
, когда он был опубликован первым. В противном случае мы бы даже не попытались использовать это решение R
)
library(tidyverse)
df1 %>%
group_by(Type, From) %>%
summarise(To = toString(To))
# A tibble: 5 x 3
# Groups: Type [?]
# Type From To
# <chr> <chr> <chr>
#1 A H1 U1, IL
#2 A H9 I8
#3 B P2 P8, P7
#4 C P7 O8
#5 C P9 O8, I0
data
df1 <- structure(list(Type = c("A", "A", "A", "B", "B", "C", "C", "C"
), From = c("H1", "H9", "H1", "P2", "P2", "P9", "P9", "P7"),
To = c("U1", "I8", "IL", "P8", "P7", "O8", "I0", "O8")),
class = "data.frame", row.names = c(NA,
-8L))
В python
мы можем сделать
out = df2.groupby(['Type', 'From'])['To'].apply(lambda x: ','.join(x)).reset_index()
print(out)
# Type From To
#0 A H1 U1,IL
#1 A H9 I8
#2 B P2 P8,P7
#3 C P7 O8
#4 C P9 O8,I0
data
import pandas as pd
df2 = pd.DataFrame({'Type': ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'], \
'From': ['H1', 'H9', 'H1', 'P2', 'P2', 'P9', 'P9', 'P7'], \
'To': ['U1', 'I8', 'IL', 'P8', 'P7', 'O8', 'I0', 'O8']})