如何使用值数组“反转” CSV文件中的数据

时间:2018-12-14 22:30:00

标签: python excel csv excel-formula

我的问题是关于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?

谢谢!

3 个答案:

答案 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

我还没有阅读任何数据结构课程,或者我也建议您节省时间