создать набор рандомизированных имен столбцов в панде - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь создать набор столбцов (внутри фрейма данных panda), в которых имена столбцов рандомизированы.Это потому, что я хочу сгенерировать данные фильтра из большого набора данных случайным образом.

Как я могу сгенерировать N (= 4) * 3 набора имен столбцов, как показано ниже?

    car_speed   state_8 state_17    state_19    state_16    wd_8    wd_17   wd_19   wd_16   wu_8    wu_17   wu_19   wu_16

Мой потенциальный код ниже, но на самом деле не работает.Мне нужно сначала блоки 'состояния_', затем 'wd_', а затем 'wd_'.Мой код ниже генерирует 'state_', 'wd_', 'wu_' индивидуально в последовательном порядке.В дальнейшем у меня возникают проблемы с заполнением данных из большего набора данных

def iteration1(data, classes = 50, sigNum = 4):
    dataNN = pd.DataFrame(index = [0])
    dataNN['car_speed'] = np.zeros(1)
    while len(dataNN.columns) < sigNum + 1:
        state = np.int(np.random.uniform(0, 50))
        dataNN['state_'+str(state)] = np.zeros(1) # this is the state value set-up
        dataNN['wd_' + str(state)] = np.zeros(1) # this is the weight direction
        dataNN['wu_' + str(state)] = np.zeros(1) # this is the weight magnitude

    count = 0 # initialize count row as zero
    while count < classes :
        dataNN.loc[count] = np.zeros(len(dataNN.columns))
        for state in dataNN.columns[1:10]:
            dataNN[state].loc[count] = data[state].loc[count]
        count = count + 1
        if count > classes : break
    return dataNN

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018
import random
import pandas as pd

def iteration1(data, classes = 5, subNum = 15):
    dataNN = pd.DataFrame(index = [0])
    dataNN['car_speed'] = np.zeros(1)

    states = random.sample(range(50), sub_sig)
    for i in range(0, sub_sig, 1):
        dataNN['state_'+str(states[i])] = np.zeros(1) # this is the state value set-up
    for i in range(0, subNum, 1):
        dataNN['wd_' + str(states[i])] = np.zeros(1) # this is the weight direction
    for i in range(0, subNum, 1):
        dataNN['wu_' + str(states[i])] = np.zeros(1) # this is the weight magnitude

    return dataNN
0 голосов
/ 14 ноября 2018

Если предположить, что у вас проблема с отсутствием группировки "state_*", "wd_*" и "wu_*", я предлагаю сначала выбрать sigNum / 3 случайные числа, а затем использовать их для обозначения столбцов.Как следующее:

states = [np.int(np.random.uniform(0, 50)) for _ in range (sigNum/3)]
i = 0
while len(dataNN.columns) <= sigNum:
    state = states[i]
    i += 1
    dataNN['state_'+str(state)] = np.zeros(1) # this is the state value set-up
    dataNN['wd_' + str(state)] = np.zeros(1) # this is the weight direction
    dataNN['wu_' + str(state)] = np.zeros(1) # this is the weight magnitude
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...