【发布时间】:2023-01-13 00:32:04
【问题描述】:
我正在做一个 RF 项目,工作流程如下:
- 定义所需频率扫描的
start、stop、step - 计算每个频率的特定线路阻抗
Z0和频率相关有效介电常数eef - 为每个 f 计算传输矩阵
ABCD - 从 ABCD 计算散射参数 S(复值)
- 计算参数的大小
- 最后绘制它们
目前,我已经通过在 for 循环中填充列表/numpy 数组来实现它。这可行,但当我想菊花链连接多个 ABCD 时,它很丑陋且需要大量劳动。 问题是调试困难(在上述步骤之间丢失临时结果。
我认为一个解决方案可能是使用 pandas 但我很难实现以下必需品:
- 创建以频率为索引的数据框(f 的列也可能有效)
- “即时”扩展列以存储每个 f 的结果
- 为某些列单独设置
dtype=,因为当前dtype=np.clongdouble是必需的(否则我在后面的计算中将 div 减为零) - 一列包含一个 numpy 数组(abcd 矩阵)
我四处搜索,但结果并没有阐明所需的概念和我的方法
>>> import pandas as pd >>> start = int(100E6) >>> stop = int(1E9) >>> step = int(1E6) >>> df = pd.DataFrame(index=range(start,stop+step,step),columns=["z0","eef"]) >>> df.index RangeIndex(start=100000000, stop=1001000000, step=1000000) >>>当我尝试访问
df.index(1000)或df[1000]时抛出错误
【问题讨论】:
-
您已经定义了一个最低索引为 100E6 的数据框,您会收到 df[1000] 的索引错误,因为您的数据名中不存在该索引。此外,最好使用 df.iloc[r] 按行访问 df,其中 r 是行号
-
谢谢您的回答。我写了一个无法编辑的回复(太旧了)所以我删除了它。像
f=100000000这样按频率访问行的解决方案是使用loc而不是iloc。 ``` df = pd.DataFrame(index=range(start,stop+step,step),columns=["foo","break","baz"]) df.loc[100000000] ``` 给出所需的输出。