如何从含75列的CSV文件中提取指定列创建新DataFrame?
解决Pandas提取指定列创建新DataFrame的问题
你当前的代码写法存在两个问题:
pd.DataFrame(df[1], df[3])用法错误,Pandas的DataFrame构造函数第二个参数是索引,这会导致df[3]被当成新DataFrame的索引,而非要保留的列。- 直接用数字
df[1]取列仅当列名是数字时有效,若你的CSV有表头(默认情况),这样会因找不到对应列名报错。
正确实现方法
方法一:按列位置提取(iloc)
利用iloc按位置索引提取(位置从0开始,第2列对应索引1,第4列对应索引3):
import pandas as pd df = pd.read_csv(r'C:\Users\krist\OneDrive\Área de Trabalho\Programação\Python\NFe_E_V3_00626708_20220801_20220830.csv', encoding='latin1', sep=';') # 提取第2列和第4列 dfreduz = df.iloc[:, [1, 3]] print(dfreduz)
方法二:按列名提取(更直观)
如果你知道目标列的具体名称,直接传入列名列表即可:
# 替换为你实际需要的列名,比如['Nome', 'Valor'] dfreduz = df[['列名1', '列名2']]
特殊情况:CSV无表头
如果你的CSV文件没有表头,需在read_csv中添加header=None,此时列名会自动设为0、1、2...,直接用数字索引取列就会生效:
df = pd.read_csv(r'你的文件路径', encoding='latin1', sep=';', header=None) dfreduz = df[[1, 3]]
内容的提问来源于stack exchange,提问作者Kristen
相关产品推荐
相关产品推荐

