pandas 我正在构建一个计算噪声电平的应用程序,我需要一种简单的方法来构建衰减表并访问它们以进行阵列操作

8xiog9wr  于 2023-03-11  发布在  其他
关注(0)|答案(1)|浏览(116)

我正在使用python应用程序来构建表,然后访问它们来执行数组计算。一个典型的表如下表所示。我需要选择一个特定的行,并使用该行执行一个简单的数组减法,以得到更新的计算结果。我需要处理大约10个表,这些表的排列相似,但最多要长4倍。不是很大的表,但我需要构建一个GUI来帮助用户选择要添加到计算中的单行。我使用panda和/或prettytable来构建表,使用NumPy来支持数组计算,使用tkinter来构建GUI。我打算使用tkinter中的下拉列表来选择表,然后使用另一个控件来选择所选表的单行。
我似乎不能让Pandas轻松地建立 Dataframe 和访问选定的单行数据,其中只包括列_63Hz到_4000Hz。漂亮的表格似乎是一个更容易的方式来建立表格,但随后的表的操纵是未知的。所有关于如何执行这一过程的建议将非常感谢。

+-----------+------+--------+--------+-------+--------+---------+---------+---------+
| duct_size | P_A  |  _63Hz | _125Hz | 250Hz | _500Hz | _1000Hz | _2000Hz | _4000Hz |
+-----------+------+--------+--------+-------+--------+---------+---------+---------+
|    6x6    |  8   |  0.3   |  0.2   |  0.1  |  0.1   |   0.1   |   0.1   |   0.1   |
|   12x12   |  4   |  0.35  |  0.2   |  0.1  |  0.06  |   0.06  |   0.06  |   0.06  |
|   12x24'  |  3   |  0.4   |  0.2   |  0.1  |  0.05  |   0.05  |   0.05  |   0.05  |
|   24x24   |  2   |  0.25  |  0.2   |  0.1  |  0.03  |   0.03  |   0.03  |   0.03  |
|   48x48   |  1   |  0.15  |  0.2   |  0.07 |  0.02  |   0.02  |   0.02  |   0.02  |
|   72x72   | 0.07 |  0.1   |  0.1   |  0.05 |  0.02  |   0.02  |   0.02  |   0.02  |
+-----------+------+--------+--------+-------+--------+---------+---------+---------+

我需要帮助来理解如何构建表,这些表可以被切片以提供列_63Hz到_4000Hz中的值的数组,以便在GUI环境中进一步操作和使用。

xienkqul

xienkqul1#

为了确保我理解正确,您知道如何创建表格,但不知道如何动态地显示它们?如果您知道如何操作数据,然后你可以把函数编程到按钮中,为用户执行操作,然后用每一个变化重新绘制结果。不要直接在表上工作,把表看作纯粹的输出和引用。我对tkinter做了一些类似的事情,我基本上在每个按钮触发的函数的末尾放置了一个显示函数调用的表。
下面的代码应该有助于返回一个series对象,该对象包含第一行中给定范围内的值。

import pandas as pd

# create a dataframe
df = pd.DataFrame({
    'duct_size': ['6x6', '12x12', '12x24', '24x24', '48x48', '72x72'],
    'P_A': [8, 4, 3, 2, 1, 0.07],
    '_63Hz': [0.3, 0.35, 0.4, 0.25, 0.15, 0.1],
    '_125Hz': [0.2, 0.2, 0.2, 0.2, 0.2, 0.1],
    '250Hz': [0.1, 0.1, 0.1, 0.1, 0.07, 0.05],
    '_500Hz': [0.1, 0.06, 0.05, 0.03, 0.02, 0.02],
    '_1000Hz': [0.1, 0.06, 0.05, 0.03, 0.02, 0.02],
    '_2000Hz': [0.1, 0.06, 0.05, 0.03, 0.02, 0.02],
    '_4000Hz': [0.1, 0.06, 0.05, 0.03, 0.02, 0.02]
})

# select only the columns you need
cols = ['_63Hz', '_125Hz', '250Hz', '_500Hz', '_1000Hz', '_2000Hz', '_4000Hz']
df_subset = df[cols]

row = df_subset.iloc[0]

相关问题