欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

删除pandas中产生Unnamed:0列的操作

程序员文章站 2022-04-17 13:27:42
我们在数据处理,往往不小心,pandas会“主动”加上行和列的名称,我现在就遇到了这个问题。这个是pandas中to_csv生成的数据各种拼接之后的最终数据(默认参数,index=true,colum...

我们在数据处理,往往不小心,pandas会“主动”加上行和列的名称,我现在就遇到了这个问题。

这个是pandas中to_csv生成的数据各种拼接之后的最终数据(默认参数,index=true,column=true)

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中处理,一样是可以的,事实是我也是这么做的。

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,不再赘述。

最后效果:

=============================开始处理:==============================
    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 参数,指定哪一行为索引行。

如:

test = pd.read_csv(filename,index_col=0)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

相关标签: pandas Unnamed:0