Есть ли способ сделать отдельный столбец в зависимости от значений другого столбца в python 3.x? - PullRequest
0 голосов
/ 30 марта 2020

Я пишу код в python, чтобы проанализировать мои данные для моей диссертации. Из эксперимента я получаю большой набор данных. В первой части скрипта он генерирует вывод, похожий на следующий:

GateVolt      Field      HallVolt 
0             1500          76       
0             1490          75
0             1485          74
.               .            .
.               .            .
0.1           1485          72
0.1           1476          70
.               .            .
.               .            .
0.2           1470          67
0.2           1465          62
.               .            .
.               .            .
.               .            .

На основе этого вывода проводится дальнейший анализ. Код, который я написал:

    #Read the CSV that contains all the data

    field = np.array([])
    hallVolt = np.array([])
    gate_voltage = np.array([])
    channel_voltage = np.array([])
    voltage_Counter = 0

    for lineIndex in range(len(fileLines)):
        currentLine = fileLines[lineIndex]
        dataSegment = currentLine.split()
        field = np.append(Field, float(dataSegment[9])) #This is milli Tesla
        hallVolt = np.append(hallVolt, float(dataSegment[5])) #This is milli Volt
        channel_voltage = np.append(channel_voltage, float(dataSegment[2])) #This is Volt
        VG = float(dataSegment[6]) - float(dataSegment[2])/2
        gate_voltage = np.append(gate_voltage, np.round(VG, 2)) #This is Volt
        if lineIndex > 1 and VG != gate_voltage[lineIndex-1]:
            voltage_Counter = voltage_Counter + 1

    HallVoltage = hallVolt-((max(hallVolt))+min(hallVolt))/2
    HallVoltage_Norm = HV/((max(HV)-min(HV))/2)

Так что я хочу, чтобы мой код делал отдельные столбцы для «Холловского напряжения» и «Magneti c Поле» для каждого «напряжения на затворе», что-то вроде следующего :

GateVolt Field  HallVoltage  GateVolt  Field  HallVolt   GateVolt  Field  HallVolt
0        1500          76     0.1       1485     72       0.2      1470        67
0        1490          75     0.1       1476     70       0.2      1465        62
0        1485          74      .         .        .        .         .        .
.          .            .      .         .        .        .         .        .
.          .            .      .         .        .        .         .        .
.          .            .      .         .        .        .         .        .

В конце я хочу построить график «напряжение Холла» против «поля», а также провести некоторый анализ и подгонку, а также еще несколько графиков для различных напряжений затвора.

Я почти новичок ie в кодировании и python, и я не знаю, что делать дальше, чтобы получить такой вывод. Есть ли способ достичь того, что я хочу сделать? Заранее спасибо! :)

1 Ответ

0 голосов
/ 30 марта 2020

Вы можете разделить эти таблицы, используя groupby следующим образом:

x = df.groupby(['GateVolt'])
for state, frame in x:
    print(f"{state!r}")
    print("------------------------")
    print(frame, end="\n\n")

enter image description here

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