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

Pandas遍历CSV用户名列表查询DataFrame返回空结果问题求助

问题排查与修复

你代码中存在以下几个直接导致结果为空的问题:

  • 变量名不匹配:你读取CSV文件后赋值给了ListPair,但循环遍历的时候用的是不存在的变量Listnames,无法拿到正确的遍历对象。
  • iterrows()返回值用法错误:iterrows()遍历返回的是(索引, 行Series对象)的二元组,直接把整个行对象拿去和name字段比对,永远匹配不到结果。
  • 字符串格式化错误:你写的'{row}'没有加f前缀,并不是f-string,实际比对的是固定字符串"{row}",不可能匹配到数据库里的用户名。
  • 导出CSV的SQL逻辑错误:你的users表没有Pair字段,查询SELECT Pair FROM ...根本拿不到用户名数据,而且没有加DISTINCT关键字,没法保证每个用户名只出现一次。
  • 结果变量被覆盖:循环里每次都给t1重新赋值,循环结束后只会保留最后一次查询的结果,之前的结果都会丢失。

修复后代码

第一步:修正导出CSV的逻辑

# 用参数化查询避免SQL注入,查询去重后的name字段,明确指定列名
listc = c.execute("SELECT DISTINCT name FROM users WHERE Timestamp = ?", (time1min,)) 
df_to_output = pd.DataFrame(listc, columns=['name'])
df_to_output.to_csv("nameusers.csv", index=False)

第二步:修正遍历查询逻辑

# 读取用户名CSV
name_df = pd.read_csv("nameusers.csv")
# 用列表存储所有用户的查询结果
result_list = []
for idx, row in name_df.iterrows():
    # 取当前行的name值做匹配
    user_all_data = df.loc[df['name'] == row['name']]
    result_list.append(user_all_data)

# 如果需要把所有结果合并为一个DataFrame,可追加以下代码
total_result = pd.concat(result_list, ignore_index=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:54:03