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

如何利用DataFrame一列的值访问另一列?如何逐行获取值'bleh'?

用一列的值访问另一列的值,以及提取特定值'bleh'

我来一步步帮你解决这个问题~首先咱们先明确场景:假设你有一个DataFrame,其中一列存储的是其他列的名称,你想通过这列的每个值,去对应提取另一列(或其他列)的该行数据,之后还要筛选出值为bleh的结果。

第一步:构造正确的DataFrame

你提到之前构造DF时多了一层[],那咱们先给出一个正确的示例DF:

import pandas as pd

df = pd.DataFrame({
    'target_col': ['data_col1', 'data_col2', 'data_col1', 'data_col3'],
    'data_col1': ['apple', 'banana', 'bleh', 'cherry'],
    'data_col2': ['dog', 'bleh', 'cat', 'elephant'],
    'data_col3': ['red', 'blue', 'green', 'yellow']
})

这里target_col列存的是要访问的列名,data_col1/data_col2/data_col3是存储实际数据的列。

第二步:用一列的值访问另一列的值

要实现这个需求,最直接的方式是用apply结合lambda函数,指定按行处理(axis=1):

# 提取每行根据target_col指定的列的值
df['extracted_value'] = df.apply(lambda row: row[row['target_col']], axis=1)

执行后,DF会新增一列extracted_value,里面就是每行根据target_col的列名提取到的数据。

第三步:逐行获取值'bleh'

现在要筛选出extracted_value中等于bleh的行,或者直接提取这些bleh值:

  • 方式一:筛选出包含bleh的行
bleh_rows = df[df['extracted_value'] == 'bleh']
  • 方式二:直接提取所有bleh值组成的Series
bleh_values = df.loc[df['extracted_value'] == 'bleh', 'extracted_value']

补充:更高效的替代方法(避免apply)

如果你的DF数据量很大,apply的效率可能偏低,这时可以用以下更高效的方式:

# 使用numpy索引实现高效提取
df['extracted_value'] = df.values[df.index, df.columns.get_indexer(df['target_col'])]

这样就能完美实现你的需求啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:23:21