pandas读取表格时header和index_col的设置讲解

本篇参考了下面两个博客

pandas读取表格时候header的用法
pandas read_csv参数index_col = None,0,False的区别

他们讲的都很好,我自己也尝试了一些案例,于是做个汇总

对于csv文件等,在读取的时候,需要给列和行进行命名,这样可以方便后续处理。

省流版

如果你的csv文件没有列名和行名(这点很重要,下面会有详细讲解),设置df = pd.read_csv(file_name,header=None, index_col=None

  1. 对于列名header,设置为None会选择0,1,2,3作为你的每一列的索引名
  2. 对于行名index_col,设置为None也是如此。

代码如下

import io
import pandas as pd
t = "index,a,b,hi,hello,pandas"
df = pd.read_csv(io.StringIO(t), header=None,index_col=None)
print(df)
"""输出内容如下:
       0  1  2   3      4       5
0  index  a  b  hi  hello  pandas
"""

详细版

注意header设置为None,如果此时每行有具体的value,则会将value加入到读取的表中,出现错误!!!

header

  1. 对于header,可以设置为None或者具体的行,但是不能设置为False

    再次解释:设置为None会按照0,1,2给值,但是如果csv原本的列有列名,这时候会将列加入到value中。设置为None的例子可以看省流版

  2. header设置为具体的行(header=0|1|2...
    这时候header会将对应行作为每列的名字,但是在这一行之前的内容都不进行选取。代码如下

import io
import pandas as pd
t = "index,a,b,hi,hello,pandas"+"\n"+ "who,are,you,i,am,man"
df = pd.read_csv(io.StringIO(t), header=0,index_col=None)
print(df)
"""输出内容如下:
  index    a    b hi hello pandas
0   who  are  you  i    am    man
可以看到,df中的第0列都作为列名了
"""

Index_col

对于index_col,可以设置为None或者具体的列,可以设置为False

  1. 设置为None
import io
import pandas as pd
t = "index,a,b,hi,hello,pandas"+"\n"+ "who,are,you,i,am,man"
df = pd.read_csv(io.StringIO(t), header=None,index_col=None)
print(df)
"""输出内容如下:
       0    1    2   3      4       5
0  index    a    b  hi  hello  pandas
1    who  are  you   i     am     man
"""
  1. 设置为具体的列,这里会将那一列的值取出作为列名
import io
import pandas as pd
t = "index,a,b,hi,hello,pandas"+"\n"+ "who,are,you,i,am,man"
df = pd.read_csv(io.StringIO(t), header=None,index_col=2)
print(df)
"""
上面是header=None,index_col=None的
       0    1    2   3      4       5
0  index    a    b  hi  hello  pandas
1    who  are  you   i     am     man
输出内容如下:
         0    1   3      4       5
2                                 
b    index    a  hi  hello  pandas
you    who  are   i     am     man
可以看到,df中的第2列都作为列名了
"""
  1. 如果设置为False,则会选择0,1,2,3作为索引
import io
import pandas as pd
t = "index,a,b,hi,hello,pandas"+"\n"+ "who,are,you,i,am,man"
df = pd.read_csv(io.StringIO(t), header=None,index_col=False)
print(df)
"""
       0    1    2   3      4       5
0  index    a    b  hi  hello  pandas
1    who  are  you   i     am     man
"""

还有其他情况,这里后续可能会再补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值