如何从Pandas DataFrame列返回最值索引及指定值对应的索引?
解决Pandas DataFrame中获取特定值索引的问题
我来帮你搞定这两个关于Pandas索引的需求,结合你给出的movies_per_year示例DataFrame来一步步说明:
首先先还原你的示例数据结构,方便后续演示:
import pandas as pd # 构造示例数据 data = { 'year': [1891, 1893, 1894, 1895, 1896, 1898], 'count': [1, 1, 2, 2, 2, 5] } movies_per_year = pd.DataFrame(data).set_index('year') movies_per_year.columns = ["count"]
1. 获取最大值/最小值对应的索引值
你提到movies_per_year.max()返回了5,但需要拿到它对应的索引1898。这里直接用Pandas的idxmax()方法就能轻松实现:
# 获取count列最大值对应的索引 max_year = movies_per_year['count'].idxmax() print(f"最大值5对应的年份索引:{max_year}") # 输出:1898
如果要获取最小值对应的索引,用idxmin()方法即可:
# 获取count列最小值对应的索引 min_year = movies_per_year['count'].idxmin() print(f"最小值1对应的年份索引:{min_year}") # 输出:1891
注意:如果列中有多个相同的最大值/最小值,
idxmax()/idxmin()会默认返回第一个出现的那个值的索引。
2. 获取特定值的所有索引
要返回所有count值为1的索引(也就是年份1891和1893),我们可以通过布尔索引筛选出符合条件的行,再提取它们的索引:
# 筛选count等于1的行,提取其索引 target_years = movies_per_year[movies_per_year['count'] == 1].index # 转成列表方便查看 print(f"所有count值为1的年份索引:{target_years.tolist()}") # 输出:[1891, 1893]
这样就能精准拿到你需要的索引啦!
内容的提问来源于stack exchange,提问作者Yash Ghorpade
相关产品推荐
相关产品推荐

