You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame中根据指定列值查找同行对应值

嗨,我来帮你搞定这个Pandas的取值问题!先把你的示例DataFrame还原出来,方便后续演示:

import pandas as pd

data = {
    'Time': [00000.0, 00001.0, 00002.0, 00003.0, 00004.0, 00005.0, 00006.0, 00007.0, 00008.0, 00009.0, 00010.0, 00011.0, 00013.0, 00014.0, 00015.0, 00016.0, 00017.0, 00018.0],
    'P': [1004.6, 1004.2, 1003.5, 1002.8, 1002.0, 1001.4, 1000.3, 999.5, 998.9, 998.0, 997.3, 996.9, 995.3, 994.6, 994.3, 993.6, 992.5, 991.8],
    'T': [12.2, 12.1, 11.9, 12.0, 12.1, 12.1, 12.2, 12.1, 12.2, 12.1, 13.1, 13.2, 13.3, 13.6, 13.5, 13.5, 13.3, 13.3],
    'R': [96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 96, 96, 96],
    'H': [12, 15, 21, 27, 34, 39, 48, 55, 59, 67, 73, 76, 90, 96, 98, 104, 114, None]
}

df = pd.DataFrame(data)

下面分几种常用场景,教你怎么根据列值查找对应行的其他数据:

1. 根据单列指定值,获取该行的全部或指定列数据

比如想找Time为00010.0时对应的P和T值,有两种常用方法:

方法一:用.loc(最直观,新手友好)

.loc可以通过布尔条件定位行,还能直接指定要提取的列:

# 获取匹配行的全部数据
result_row = df.loc[df['Time'] == 00010.0]
print(result_row)

# 只提取指定列(比如P和T)
result_cols = df.loc[df['Time'] == 00010.0, ['P', 'T']]
print(result_cols)

# 确定只有一行的话,还可以直接拿标量值
p_value = df.loc[df['Time'] == 00010.0, 'P'].iloc[0]
t_value = df.loc[df['Time'] == 00010.0, 'T'].iloc[0]
print(f"对应的P值:{p_value},T值:{t_value}")

方法二:布尔索引直接筛选

写法更简洁,本质和.loc逻辑一致:

# 先筛选出匹配的行
filtered_df = df[df['Time'] == 00010.0]
# 再提取需要的列
print(filtered_df[['P', 'R', 'H']])
2. 处理多个匹配行的情况

如果指定列的值有重复(比如R列的96出现很多次),上面的方法会返回所有匹配行,你可以直接转成列表或者进一步处理:

# 获取所有R=96的行的H列数据
h_values = df[df['R'] == 96]['H'].tolist()
print(f"所有R=96对应的H值:{h_values}")
3. 频繁查询的优化:把列设为索引

如果需要反复根据某一列的值查询,建议把该列设为DataFrame的索引,查询速度会快很多:

# 将Time列设置为索引
df_indexed = df.set_index('Time')

# 直接通过索引取值,一步到位
p_value = df_indexed.loc[00010.0, 'P']
print(f"Time=00010.0对应的P值:{p_value}")

# 要是需要恢复原结构,重置索引就行
df_indexed = df_indexed.reset_index()

这些方法基本能覆盖你的查询需求啦,根据自己的场景选合适的用就好~

内容的提问来源于stack exchange,提问作者Jonathon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:27:36