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

Pandas中基于索引值查找出现情况及生成标记表格的方法

一、生成目标二进制表格

核心思路是:先整理出所有非NaN的唯一值,然后对每个值逐一检查它在原数据各列中是否存在,存在标记1,不存在标记0。

完整实现代码

import pandas as pd
import numpy as np
from itertools import chain

# 1. 构造原始DataFrame
data = {
    'A': [4.0, 34.0, 100, 148.0, np.nan],
    'B': [85.0, 89.0, 99.0, 100.0, 103.0],
    'C': [85.0, 89.0, 99.0, 100.0, np.nan],
    'D': [2.0, 7.0, 10.0, 27.0, 30.0]
}
df = pd.DataFrame(data)

# 2. 提取所有非NaN的唯一值并排序
unique_values = list(set(chain(*[df[j].unique().tolist() for j in df.columns])))
unique_values = [val for val in unique_values if not pd.isna(val)]
unique_values.sort()  # 可选,让结果更整齐

# 3. 构建结果表格
result_df = pd.DataFrame(index=unique_values, columns=df.columns).fillna(0)

# 4. 遍历每个唯一值,标记是否在对应列存在
for val in unique_values:
    for col in df.columns:
        if val in df[col].values:
            result_df.loc[val, col] = 1

# 5. 重置索引并命名为id
result_df = result_df.reset_index().rename(columns={'index': 'id'})

# 查看结果
print(result_df)

输出结果示例

idABCD
020001
141000
270001
3100001
4270001
5300001
6341000
7850110
8890110
9990110
101001110
111030100
121481000

二、Pandas中基于索引查找元素出现情况的方法

这里分几种常见场景来实现:

1. 查找某个值在哪些行索引出现

如果要找某个值在整个DataFrame中出现的所有行索引:

target_value = 85.0
# 筛选出包含该值的行,获取行索引
row_indices = df[df.isin([target_value])].dropna(how='all').index.tolist()
print(row_indices)  # 输出: [0]

如果只针对某一列查找:

# 查找列B中值为89.0的行索引
row_indices = df[df['B'] == 89.0].index.tolist()
print(row_indices)  # 输出: [1]

2. 查找指定行索引的元素及存在情况

比如检查行索引4中是否有NaN,或者获取该行的所有元素:

target_row = 4
# 检查该行是否存在NaN
has_nan = df.loc[target_row].isna().any()
print(has_nan)  # 输出: True

# 获取该行的所有元素
row_elements = df.loc[target_row].tolist()
print(row_elements)  # 输出: [nan, 103.0, nan, 30.0]

3. 查找某个值在哪些列索引出现

如果要找某个值在哪些列中存在:

target_value = 100.0
col_indices = df.columns[df.isin([target_value])].tolist()
print(col_indices)  # 输出: ['A', 'B', 'C']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 08:17:32