python - 如何比较数据框中的两列,检查它们之前是否存在?
问题描述
我有一个具有以下列级别名称的 5 级 MultiIndex 数据框:
names=['Point', 'Method', 'Site', 'Direction', 'Damping']
和索引名称frequency
。
每列都是一个光谱,我的目标是比较每个“点”的不同光谱。更具体地说,我想比较每一点:
df.loc[:,(Specific Point, 1, Big site, Horizontal, 0.05)
和
df.loc[:,(Specific Point, 2, Small Site, Horizontal, 0.05)
因为这个数据框是合并的结果,所以列并不总是存在,并且我需要根据不同的条件比较额外的点。
我的目标是创建一个具有不同列的新数据框,指定是否:Spectrum B 在某个点超过 Spectrum A,如果 Spectrum B max 大于 Spectrum A max 等。
问题是我不知道如何检查我需要比较的列是否存在。如果不是,则所需的操作是通过这一点并开始下一个。
我尝试使用点名称创建一个循环,而不是调用特定的列,但是因为有时它们不存在,我得到一个KeyError
指示标签不存在的信息。
解决方案
我通过使用 try 成功解决了我的问题,除了在我的循环中,例如:
try:
# trying to call both columns needed, if fail then go to except.
SpectrumA = df.loc[:,(Specific Point, 1, Big site, Horizontal, 0.05)
SpectrumB = df.loc[:,(Specific Point, 2, Small Site, Horizontal, 0.05)
# comparing both columns in case of success, and writing the result in a
# new dataframe.
spectrum_compare(newdf, i, SpectrumA, SpectrumB)
except KeyError as error:
print(error)
推荐阅读
- reactjs - 胜利 | 如何从最低的负 y 轴值显示 x 轴
- javascript - onClick 使用 jquery 显示当前 div
- javascript - 无法在 PWA (Firebase) 中获取自定义推送通知事件
- crystal-reports - 在运行时将 Crystal Reports 数据源从 MSACCESS 更改为 SQLSERVER
- java - 我在 firebase library 中找到了重复的类。如何排除?
- oracle - PL/SQL:ORACLE 中的感叹号
- android - 如何在android的workmanager中使用自定义约束
- apache-kafka - 在 Kafka 连接器中,如何获取我的 Kafka 连接器当前使用的引导服务器地址?
- amazon-web-services - 环境因进入已终止状态而无法启动
- c - 使用 C 将整数数组写入文件