Python общая сумма из файла CSV - PullRequest
       0

Python общая сумма из файла CSV

0 голосов
/ 05 февраля 2020

у меня 133 CSV-файла

первый файл file1.cvs содержит следующие данные:

A               b    C
Name            2   Value
jack            3   2%
jack            3   1.33%
jack            4   1.112%
sara            5   4%
sara            6   9%
adam            1   7%
adam            2   10%
nada            3   3%
nada            4   1%
tom             5   1%

я хочу вычислить сумму указанного c имени в столбце ( только jack, sara, tom) и столбец C и сохраните вывод в новом файле CSV, который выглядит следующим образом:

File name : file1.csv
jack  4.442%
sara  13%
tom   1%    

File name : file2.csv

....... et c

используя любой язык программирования (python, ruby, r et c ..)

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Используя R, вы можете сначала найти все CSV, содержащиеся в одной папке, а затем выполнить sapply над этим вектором (используя пакет dplyr для выполнения требуемых операций). Наконец, найдите файлы результатов в той же папке, которая указана в list.files.

library(dplyr)

#Find all the csv files in the indicated path
#Change the path location to the folder where you have your csv files
file_locs<-list.files(path="C:/Folder with csvs",
                      pattern = ".csv",
                      full.names = T)

sapply(file_locs, function(x){

  #Read csv, skipping first line if it contains the A, b, c entries
  #as headers, if not you can remove the "skip = 1"
  df<-read.csv(x, skip = 1)

  #Use dplyr to get the Value sum, grouped by Name
  resuls<-df %>%
    group_by(Name) %>%
    summarize(sumVal = sum(Value))

  #Get the csv original name, i.e., without the .csv part
  file_name<-strsplit(x,".csv")[[1]][1]

  #Write the results using the original file name and adding: _resul
  write.csv(resuls, paste0(file_name,"_resul.csv"),row.names = F)
})
0 голосов
/ 05 февраля 2020

1.Создать воспроизводимые минимальные примерные данные

df <- data.frame(A=rep(c("Jack", "Joe"), 3), C=runif(6))

2.Решение с использованием библиотеки dplyr:

library(dplyr)
summarised <- df %>% 
  group_by(A) %>% 
  summarise(Total = sum(C))

write.csv(summarised, "File_Name.csv")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...