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

Python处理CSV列值求最低价格报错(TypeError),求解决方法

问题

我有一个包含产品数据的CSV文件,包含product_name、price、website三列。想要用Python获取最低价格,编写了如下代码但运行时报错:TypeError: list indices must be integers or slices, not Series,代码如下:

import pandas as pd

data = pd.read_csv("product_list.csv")
df = pd.DataFrame(data, columns= ['price'])
df['price'] = pd.to_numeric(df['price'], errors='coerce')

prices = 99
temp = []

for i in df:
    temp.append(df.price)

for i in temp:
    if temp[i]<prices:
        prices = temp[i]       

print(prices)
问题分析与解决方案

错误原因

  • 第一个循环for i in df:遍历DataFrame时默认迭代列名,这里df仅包含price一列,循环仅执行一次,将整个df.price(Series对象)添加到temp列表,导致temp存储的是Series而非单个价格值。
  • 第二个循环for i in temp:此时i是Series对象,用temp[i]索引列表会触发类型错误,因为列表索引仅支持整数或切片。

最优实现(利用Pandas内置方法)

Pandas提供了直接获取最小值的方法,无需手动循环,代码简洁高效:

import pandas as pd

# 读取CSV文件
data = pd.read_csv("product_list.csv")
# 将price列转为数值类型,无效值转为NaN
data['price'] = pd.to_numeric(data['price'], errors='coerce')
# 获取最低价格,自动跳过NaN值
min_price = data['price'].min()

print(f"最低价格为: {min_price}")

手动循环实现(仅作学习参考)

若坚持用循环逻辑,需遍历price列的每个具体值,而非列名或整个Series:

import pandas as pd

data = pd.read_csv("product_list.csv")
df = pd.DataFrame(data, columns=['price'])
df['price'] = pd.to_numeric(df['price'], errors='coerce')

# 初始化最低价格为无穷大,确保能被有效价格覆盖
min_price = float('inf')

# 遍历去空后的价格值
for price in df['price'].dropna():
    if price < min_price:
        min_price = price

print(f"最低价格为: {min_price}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:45:54