python - Python 中清理返回数据 - xlsxwriter

标签 python xlsxwriter

我想要一些关于下面的 python 方法的帮助。正如您在下面看到的,该函数返回列表中的一些数据。

def EIS(self):
    '''This function runs EIS experiment'''

    #some code here

    frequencies=[100000.0,79432.8,63095.7,50118.7,39810.7,31622.8,25118.9]
    Data = []
    for freq in (frequencies) :
        #print(freq)
        self.sendcommand("GS_SetBestCurrentRange", timeout=0.1)
        self.sendcommand("GS_FRASetModulationFrequency %.5f" %freq, timeout=0.1)
        self.sendcommand("GS_FRAGetMeasurementMinDurationMS", timeout=0.1)
        self.sendcommand("GS_FRAMakeMeasurement 1", timeout=0.1)
        self.sendcommand("GS_GetCurrentRange")
        VoltageSamples = self.sendcommand("PS_FRAGetVoltageSample", timeout=0.1)
        #CurrentSample = self.sendcommand("PS_FRAGetCurrentSample", timeout=0.1).split(" ")
        Data.append(VoltageSamples,)
        print (Data)
    return Data

我的问题是我返回的数据格式不正确。下面您可以看到它返回的内容:

['GS_FRAGetVoltageSample 0.00699254 -213.701 0\r']
['GS_FRAGetVoltageSample 0.00699254 -213.701 0\r', 'GS_FRAGetVoltageSample 0.0128992 -187.322 0\r']

我想清除数据,这样它只能返回 float (0.00699254 -213.701 等...),我想让数字 0.00699254 和 0.0128992 位于一列中,而 -213.701 和 -187.322 位于其中另一栏。我使用 xlswriter 库并调用该函数:

Data= TEST.EIS()
worksheet4.write_column('A1',Data)

但是它会像这样输出A1列中的所有数据

"GS_FRAGetVoltageSample 0.00699254 -213.701 0"
"GS_FRAGetVoltageSample 0.0128992 -187.322 0"
"GS_FRAGetVoltageSample 0.0113329 -67.7349 0"
"GS_FRAGetVoltageSample 0.0110053 -63.2269 0"
"GS_FRAGetVoltageSample 0.0149435 -51.8437 0"
"GS_FRAGetVoltageSample 0.0131203 -38.0366 0"
"GS_FRAGetVoltageSample 0.0120906 -35.6771 0"

对于如何清理数据并使它们进入不同的列有什么帮助吗?

最佳答案

您需要清理VoltageSamples:

def EIS(self):
    ...
    Data = []
    for freq in frequencies:
        ...
        ...
        VoltageSamples = self.sendcommand . . . 
        samples = VoltageSamples.split()
        Data.append( (samples[1], samples[2]) )
    return Data

然后您需要插入两个不同的列表,一个插入 A1,另一个插入 A2:

Data = TEST.EIS()
print(Data)
list1, list2 = zip(*Data)

worksheet4.write_column('A1', list1)
worksheet4.write_column('B1', list2)

更新:

我使用此测试代码来验证我上面的建议:

frequencies=[31622.8, 25118.9]
Data = []
for freq in frequencies:
    VoltageSamples = ' '.join(('foo', str(freq), 'bar', 'zoo'))
    samples = VoltageSamples.split()
    Data.append( (samples[1], samples[2]) )

print(Data)
list1, list2 = zip(*Data)
print(list1)
print(list2)

我得到的输出是:

[('31622.8', 'bar'), ('25118.9', 'bar')]
('31622.8', '25118.9')
('bar', 'bar')

关于python - Python 中清理返回数据 - xlsxwriter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45508819/

相关文章:

php - 在php中左右剥离

python - 计算预测连续值的准确度分数

python - 将数据框附加到 excel with pandas

python - Xlsxwriter:类型错误: "expected string or buffer"

sqlite - 在python的多个选项卡中将数据从sqlite导出到Excel文件

python - 加载带有屏幕截图框架的页面

python - 在另一个线程中在 python3 中运行的非阻塞套接字服务器

python - 将新列添加到数据框,这是 groupby 计数的结果

Python xlsxwriter TypeError : tuple indices must be integers, 不是 str

python - 使用 pd.DataFrame.to_excel 时旋转单元格的文本?