我的问题是关于CSV / Excel数据。
我在CSV / Excel中有一个庞大的列表,我想从中“反转”数据:
ArticleNO;Reference<br>
TRX82056-4;428030,426532,422992<br>
TRX82058-4;428030,426532,422992
对此:
Reference,ArticleNO<br>
428030;TRX82056-4,TRX82058-4<br>
426532;TRX82056-4,TRX82058-4<br>
422992;TRX82056-4,TRX82058-4
不是以“ ArticleNO”为基础,以“ Reference”为匹配项数组,而是以“ Reference”为基础,以“ ArticleNO”为匹配项数组,
有人知道如何做到这一点吗?可能是Excel还是Python?
谢谢!
答案 0 :(得分:0)
不得不这样做有点丑陋,因为我不想创建文件并将其写入新文件,但是类似的事情应该可以做到。
>>> old = """ArticleNO;Reference<br>
... TRX82056-4;428030,426532,422992<br>
... TRX82058-4;428030,426532,422992"""
>>> lines = old.split('\n')
>>> for line in lines:
... parts = line.split(';')
... print(parts[1] + ';' + parts[0])
...
Reference<br>;ArticleNO
428030,426532,422992<br>;TRX82056-4
428030,426532,422992;TRX82058-4
答案 1 :(得分:0)
由于您似乎与工具无关,因此这是在R中执行此操作的一种方法:
library(tidyverse)
library(stringr)
df1 %>% mutate(Reference = strsplit(as.character(Reference),",")) %>%
unnest(Reference) %>%
group_by(Reference) %>%
summarize(ArticleNO = str_c(ArticleNO, collapse= ","))
# A tibble: 3 x 2
Reference ArticleNO
<chr> <chr>
1 422992 TRX82056-4,TRX82058-4
2 426532 TRX82056-4,TRX82058-4
3 428030 TRX82056-4,TRX82058-4
数据:
df1 <- structure(list(ArticleNO = c("TRX82056-4", "TRX82058-4"), Reference = c("428030,426532,422992",
"428030,426532,422992")), row.names = c(NA, -2L), class = "data.frame")
答案 2 :(得分:0)
天真的方法可以是遍历ArticleNO的列表,并将每个引用的遍历嵌套在其中。我认为这将需要时间来支持。
如此
for all ArticleNo
for all Reference
append reference to a new array
scan the complete list for the reference and add the ArticleNO in another column.
and also change the prev. checked entries to something else to avoid rescanning
我还没有阅读任何数据结构课程,或者我也建议您节省时间