本篇参考了下面两个博客
pandas读取表格时候header的用法
pandas read_csv参数index_col = None,0,False的区别
他们讲的都很好,我自己也尝试了一些案例,于是做个汇总
对于csv文件等,在读取的时候,需要给列和行进行命名,这样可以方便后续处理。
省流版
如果你的csv文件没有列名和行名(这点很重要,下面会有详细讲解),设置df = pd.read_csv(file_name,header=None, index_col=None
- 对于列名
header
,设置为None
会选择0,1,2,3
作为你的每一列的索引名 - 对于行名
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
-
对于
header
,可以设置为None
或者具体的行,但是不能设置为False
再次解释:设置为
None
会按照0,1,2
给值,但是如果csv原本的列有列名,这时候会将列加入到value中。设置为None
的例子可以看省流版 -
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
- 设置为
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
"""
- 设置为具体的列,这里会将那一列的值取出作为列名
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列都作为列名了
"""
- 如果设置为
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
"""
还有其他情况,这里后续可能会再补充。