Применение набора шагов для всех строк в наборе данных, чтобы создать новый набор данных - PullRequest
0 голосов
/ 21 сентября 2019

Для набора данных в первой строке я применил набор шагов, чтобы создать новую строку.Мне нужно применить этот набор шагов для всего набора данных (для остальных строк).Вручную это заняло бы много времени, я попытался написать цикл for, который будет работать в диапазоне длин строк (включая последнюю строку).Но я получаю ошибку.Буду признателен за вашу помощь.Спасибо.

Набор шагов:

  1. Для первой части

    • выведите первую ненулевую запись,
    • перестановка оставшихся 20 записей
    • и умножение их на ненулевое значение.
  2. Для второй части

    • применяя сопоставление, которое преобразует оставшиеся 20 записей (неперестановленную версию) с использованием сопоставления в одно число изатем умножьте на [1x20] матрицу / массив только с одним «1» и оставшимся «0».
  3. Затем, наконец,
    • добавьте результат первого и второгочасть для печати матрицы [1x20].

Мне удалось сделать это для первой строки, но я хочу сделать это для всех 483 строк, однако я не могу этого сделать.)

for i in range(len(df0.index)+1):

    a=df0.iloc[i].values
    y= []
    for i in range(len(a)):

        if a[i] != b[0]:  y.append(a[i])
    y

    import itertools
    d=(list(itertools.permutations(y[0:7])))
    p1=random.choice(d)

    e=(list(itertools.permutations(y[7:14])))
    p2=random.choice(e)

    f=(list(itertools.permutations(y[14:])))
    p3=random.choice(f)

    permutation=np.concatenate([p1, p2, p3])
    permutation

    xpi=b[0]*permutation

    y1=np.array(y[:7])
    h1=((y1[0] *y1[1]) + (y1[2] * y1[3]) +(y1[4] *y1[5])) * y1[6]

    y2=np.array(y[7:14])
    h2=((y2[0] *y2[1]) + (y2[2] * y2[3]) +(y2[4] *y2[5])) * y2[6]

    y3=np.array(y[14:])
    h3=(y3[0]*y3[1]*y3[2])+(y3[3]*y3[4]*y3[5])

    h=h1+h2+h3
    i=np.array([1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
    hy=h*i

    fxy= xpi+hy
print(fxy)
ValueError                                Traceback (most recent call last)
<ipython-input-116-103cb4f4f61d> in <module>
     36     hy=h*i
     37 
---> 38     fxy= xpi+hy
     39 print(fxy)

ValueError: operands could not be broadcast together with shapes (21,) (20,)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...