有没有一种方法可以根据python 3.x中另一列的值来分隔一列?

时间:2020-03-30 10:27:43

标签: python-3.x numpy matplotlib data-analysis

我正在用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)

所以我要我的代码做什么,以便为每个“栅极电压”分别为“霍尔电压”和“磁场”创建列,如下所示:

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      .         .        .        .         .        .
.          .            .      .         .        .        .         .        .
.          .            .      .         .        .        .         .        .
.          .            .      .         .        .        .         .        .

最后,我要绘制“霍尔电压”与“场”的关系图,还需要进行一些分析和拟合,并针对不同的栅极电压进行更多的绘制。

我几乎是编码和python的新手,而且我不知道下一步该怎么做才能获得这样的输出。有什么办法可以实现我想要的? 在此先感谢!!! :)

1 个答案:

答案 0 :(得分:0)

您可以使用groupby来分隔这些表,如下所示:

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

enter image description here