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

如何获取Pandas DataFrame各列唯一值的出现位置?

19 20 0.5841 1.0596 0.7043 0.6657

## 方案1:高效分组法(适合大数据集)
利用Pandas的`groupby`和其`groups`属性,这是处理大规模数据时效率较高的方式:
```python
import pandas as pd

# 假设你的DataFrame名为df
column_results = {}
for col in df.columns:
    # 按列值分组,获取每个值对应的索引集合
    value_groups = df.groupby(col).groups
    # 转换为你想要的格式:单个位置返回数字,多个位置返回元组
    col_result = {
        val: tuple(idx) if len(idx) > 1 else idx[0] 
        for val, idx in value_groups.items()
    }
    column_results[col] = col_result

运行后,column_results[1]就会得到你想要的格式:{0.4784: (0, 16), 0.6180: 1, 0.6735: 2, ...}

方案2:直观遍历法(可读性更强)

如果你更看重代码的易读性,这个方式逻辑更直白,也是你目前在使用的方案:

import pandas as pd

column_results = {}
for col in df.columns:
    unique_values = df[col].unique()
    col_result = {}
    for val in unique_values:
        # 获取当前值对应的所有行索引
        indices = df.index[df[col] == val].tolist()
        # 处理单个索引的情况
        col_result[val] = indices if len(indices) > 1 else indices[0]
    column_results[col] = col_result

这个方法每一步都清晰可见,方便调试和理解,完全符合你想要的输出格式。

补充说明:感谢@chris和@jazrael提供的解决方案,其中@chris的第二个方案因为可读性更强,我正在使用它。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:18:34