Цикл преобразования для применения при построении списка

Альтернатива ответам darindaCoder :

path = r'C:\DRO\DCL_rawdata_files'                     # use your path
all_files = glob.glob(os.path.join(path, "*.csv"))     # advisable to use os.path.join as this makes concatenation OS independent

df_from_each_file = (pd.read_csv(f) for f in all_files)
concatenated_df   = pd.concat(df_from_each_file, ignore_index=True)
# doesn't create a list, nor does it append to one

0
задан StatsStudent 15 January 2019 в 20:02
поделиться

2 ответа

Вот ваш цикл, написанный с vapply

out <- vapply(1:nrow(cars), 
              function (i) {
                valA <- .subset2(cars, 1)[i] + 45L
                valB <- .subset2(cars, 1)[i] + 10L
                c(valA, valB)
              }, numeric(2))
t(out) 
#       [,1] [,2]
# [1,]   49   14
# [2,]   49   14
# [3,]   52   17
# [4,]   52   17
# [5,]   53   18
# [6,]   54   19
# [7,]   55   20
# ...
# (returns an array instead of a list, but that can be changed easily).

Кстати, я не знаю, какова ваша конечная цель, но в этом примере, почему любой цикл вообще?

# vectorized
cbind(.subset2(cars, 1) + 45L, .subset2(cars, 1) + 10L)
#      [,1] [,2]
# [1,]   49   14
# [2,]   49   14
# [3,]   52   17
# [4,]   52   17
# [5,]   53   18
# [6,]   54   19
# [7,]   55   20
# ...
# or similar result with
# getDetails(cars) (version with c())
0
ответ дан niko 15 January 2019 в 20:02
поделиться

Думаю, я понял это только после небольшой помощи @Parfait (спасибо, @Parfait!). В случае, если кто-то еще искал ответ, это сработало для меня, но я бы приветствовал любые другие ответы:

lapply(1:numrows, function(i)  getDetails(cars[i,]))

и мне пришлось изменить мою функцию, чтобы она возвращала вектор вместо списка: [ 113]

getDetails<-function(parameters){
   valueA<-parameters[1]+45
   valueB<-parameters[1]+10
   c(valueA, valueB)
}
0
ответ дан StatsStudent 15 January 2019 в 20:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: