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

如何在Python中获取CSV奇偶行?R脚本迁移至Python报错求助

问题原因

报错的核心是pandas的索引逻辑和R存在差异:

  • 你使用sep=";"读取无分号分隔的单内容行文件,得到的是只有1列的DataFrame,列索引默认从0开始,你写[[1]]是尝试查找列名为1的列,自然触发不存在的报错
  • R中df[[列号]][行号]的取值逻辑,对应pandas按位置取值的语法是df.iloc[行号, 列号],你既搞反了行列的顺序,也没有使用pandas专门的位置索引方法iloc

修复后可运行代码

import pandas as pd
import numpy as np

# 读取文件,单列表默认列索引为0
table_NameUrl = pd.read_csv("Data.txt", sep=";", header=None)
# 提前提取唯一的内容列,简化后续调用
content_col = table_NameUrl.iloc[:, 0]
table_Size = len(content_col)

# Python索引从0开始,表名对应文件第1/3/5行,对应索引0/2/4,步长设为2
sequence = np.arange(0, table_Size, 2)

# 可选异常处理:如果总数据行数是奇数,说明最后一个表名没有匹配的URL,提前提示
if table_Size % 2 != 0:
    print(f"警告:数据最后一行「{content_col.iloc[-1]}」无匹配URL,已自动跳过")
    sequence = sequence[:-1]

for i in sequence:
    tableName = content_col.iloc[i]
    tableUrl = content_col.iloc[i+1]
    print(f"Table name: {tableName}")
    print(f"URL: {tableUrl}")
    fileName = f"{tableName}.csv"
    ro.globalenv['fileName'] = fileName
    last_url = "/n3/all/n6/in%20n3%2028"
    url = f"{tableUrl}{last_url}"
    ro.globalenv['url'] = url
    ro.r('table= get_sidra(api= url)')
    ro.r('write.csv(table, file= fileName, row.names = F)')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:15:00