我们在数据处理,往往不小心,pandas会“主动”加上行和列的名称,我现在就遇到了这个问题。
这个是pandas中to_csv生成的数据各种拼接之后的最终数据(默认参数,index=True,column=True)
1
2
3
4
5
6
|
Unnamed: 0 ip Unnamed: 0.1 ... 766 767 class 0 0 google.com 0 ... 0.376452 0.148091 0 1 1 facebook.com 1 ... - 0.044634 - 0.180167 0 2 2 youtube.com 2 ... 0.172028 0.002102 0 3 3 yahoo.com 3 ... 0.286067 - 0.269647 0 4 4 baidu.com 4 ... 0.034892 0.445554 0 |
我们可以看到,第一列 Unnamed:0 ,第三列Unnamed:0,这两列是我们不想需要的数据,产生原因是我们在生成csv文件的时候,采用的是默认参数,我们可以在生成csv时候,可以使用下面参数解决这一个问题。
to_csv()时候,设置index=False。或者加上index=True, index_label="id"
另外有其他同学会说了,我不想重复的再进行一遍数据处理工作,我就想在我们生成这个CSV中处理,一样是可以的,事实是我也是这么做的。
1
2
3
4
5
6
7
8
9
10
11
|
import pandas as pd data = pd.read_csv( 'finalData.csv' ) print ( '一共有多少个样本呢?' , len (data)) print ( '展示样本前4个数据' ) print (data.head()) print ( '打印样本集的其他详细信息:' ) print (data.info()) print ( '=============================开始处理:==============================' ) newData = data.loc[:, ~data.columns. str .contains( '^Unnamed' )] print (newData.head()) newData.to_csv( 'myVecData.csv' , index = False ) |
别忘了index=False,不然又生成一列新的这个不讨人喜欢的东西了。列处理也是一样,有参数column=False,不再赘述。
最后效果:
1
2
3
4
5
6
7
|
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = 开始处理: = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ip 0 1 ... 766 767 class 0 google.com 0.282674 - 0.359200 ... 0.376452 0.148091 0 1 facebook.com 0.542586 - 0.390693 ... - 0.044634 - 0.180167 0 2 youtube.com 0.598675 - 0.679748 ... 0.172028 0.002102 0 3 yahoo.com 0.212740 - 0.823602 ... 0.286067 - 0.269647 0 4 baidu.com 0.017386 - 0.355357 ... 0.034892 0.445554 0 |
补充:【pandas】pandas每次使用append追加行时都生成一个Unnamed列
pandas每次使用append追加行时多出一个Unnamed列!
解决办法:
追加行数据前,read_csv函数读取数据时, 增加 index_col 参数,指定哪一行为索引行。
如:
1
|
test = pd.read_csv(filename,index_col = 0 ) |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blank.blog.csdn.net/article/details/102980056