カカロット 发表于 2020-9-6 09:39:14

pandas处理excel

请教下各位大佬,怎么根据excel列名,从DataFrame取到从第一列到某一列所有数据?比如,列名为,【序号,姓名,年龄,班级,分数】。我想取到序号到年龄所有列,(别用数字索引 0-2,因为每次顺序不一样,要用汉字)

扼婉星 发表于 2020-9-6 09:54:00

直接df[["序号","姓名","年龄"]]就可以了

扼婉星 发表于 2020-9-6 09:55:30

直接用
df[["序号","姓名","年龄"]]
就可以的了。
DataFrame对象的索引,在[],里放入一个列表对列进行索引,在df.loc[]放进一个列表对行进行索引

疾风怪盗 发表于 2020-9-6 10:15:39

df.loc[:,['序号','姓名','年龄']]

カカロット 发表于 2020-9-6 10:28:27

疾风怪盗 发表于 2020-9-6 10:15


大佬我是想要比如:‘序号’到‘年龄’这样的形式,不知道可有方法?

疾风怪盗 发表于 2020-9-6 10:30:41

本帖最后由 疾风怪盗 于 2020-9-6 10:35 编辑

カカロット 发表于 2020-9-6 10:28
大佬我是想要比如:‘序号’到‘年龄’这样的形式,不知道可有方法?

df.loc[:,'序号':'年龄']

カカロット 发表于 2020-9-6 10:37:47

疾风怪盗 发表于 2020-9-6 10:30
df.loc[:,'序号':'年龄']

我这样写完后,提示invalid syntax。。。

カカロット 发表于 2020-9-6 10:40:38

疾风怪盗 发表于 2020-9-6 10:30
df.loc[:,'序号':'年龄']

您帮我看下?我不知道哪里错了。。
import pandas as pd
路径=r'C:\Users\Administrator\Desktop\321.xlsx'
数据=pd.read_excel(路径)
新表=pd.DataFrame(数据)

p1=新表.loc[:,['姓名':'部门全称']] #提取部门全称前面的所有列
print(p1)

疾风怪盗 发表于 2020-9-6 10:41:23

カカロット 发表于 2020-9-6 10:37
我这样写完后,提示invalid syntax。。。

你看我六楼贴的图片,应该不会报错,就是这么写的,你把代码贴上来,报错提示贴上来看看

疾风怪盗 发表于 2020-9-6 10:42:43

カカロット 发表于 2020-9-6 10:40
您帮我看下?我不知道哪里错了。。
import pandas as pd
路径=r'C:%users\Administrator\Desktop\321. ...

我一开始写错了,后来改了,你仔细看六楼的图片,把中括号里面的中括号去掉,范围选择不需要中括号

カカロット 发表于 2020-9-6 10:46:16

疾风怪盗 发表于 2020-9-6 10:42
我一开始写错了,后来改了,你仔细看六楼的图片,把中括号里面的中括号去掉,范围选择不需要中括号

哇确实确实好用啦嘿嘿嘿谢谢大佬{:5_101:}

カカロット 发表于 2020-9-6 10:48:25

本帖最后由 カカロット 于 2020-9-6 10:49 编辑

疾风怪盗 发表于 2020-9-6 10:42
我一开始写错了,后来改了,你仔细看六楼的图片,把中括号里面的中括号去掉,范围选择不需要中括号

对了大佬还想请教下,比如你的图片,给的范围是A到C,假设这中间有好多列,我想去第一列到C前面一列的数据,应该怎么写呢? 或者说姓名前面一列?

疾风怪盗 发表于 2020-9-6 10:58:05

カカロット 发表于 2020-9-6 10:48
对了大佬还想请教下,比如你的图片,给的范围是A到C,假设这中间有好多列,我想去第一列到C前面一列的 ...

没明白你的意思?
loc取值就直接写列名就可以了,范围就用:取值,单个的就用[]取值
你要是要取到姓名前一列,如果这个列是按顺序的,那你就用iloc,可以使用索引数字
import numpy as np
import pandas as pd
#创建一个Dataframe
data=pd.DataFrame(np.arange(36).reshape(6,6),index=list('abcdef'),columns=list('ABCDEF'))
print(data)
data=data.iloc[:,2:5]
print(data)
你这个代码运行看看

カカロット 发表于 2020-9-6 11:02:22

疾风怪盗 发表于 2020-9-6 10:58
没明白你的意思?
loc取值就直接写列名就可以了,范围就用:取值,单个的就用[]取值
你要是要取到姓名前 ...

dex=新表.columns.get_loc('部门全称') #获取某一列索引
# print(dex)
p1=新表.iloc[:,:dex] #提取部门全称前面的所有列

如此成功的谢谢啦大佬{:5_109:}

疾风怪盗 发表于 2020-9-6 11:04:44

カカロット 发表于 2020-9-6 11:02
dex=新表.columns.get_loc('部门全称') #获取某一列索引
# print(dex)
p1=新表.iloc[:,:dex] #提取部门 ...

还有这个获取索引的方法,都不知道,学习了
页: [1]
查看完整版本: pandas处理excel