示例:在pandas中删除列名



我已经从UCI机器学习存储库下载了威斯康星州乳腺癌数据集,并对wdbc_data进行了一些修改,使其第一行包含变量名,并以分号作为分隔符保存为csv文件。

我可以导入这个文件并打印它的头:

df = pd.read_csv("inputs/breastCancer.csv")
print(df.head()) 

在PyCharm中产生以下输出:

id;diagnosis;radius_mean;texture_mean;perimeter_mean;area_mean;smoothness_mean;compactness_mean;concavity_mean;concave_points_mean;symmetry_mean;fractal_dimension_mean;radius_se;texture_se;perimeter_se;area_se;smoothness_se;compactness-se;concavity_se;concave_points_se;symmetry_se;fractal_dimension_se;radius_worst;texture_worst;perimeter_worst;area_worst;smoothness_worst;compactness_worst;concavity_worst;concave_points_worst;symmetry_worst;fractal_dimension_worst
0  842302;M;1799;1038;1228;1001;1184;2776;3001;14...                                                                                                                                                                                                                                                                                                                                                                                                                                 
1  842517;M;2057;1777;1329;1326;8474;7864;869;701...                                                                                                                                                                                                                                                                                                                                                                                                                                 
2  84300903;M;1969;2125;130;1203;1096;1599;1974;1...                                                                                                                                                                                                                                                                                                                                                                                                                                 
3  84348301;M;1142;2038;7758;3861;1425;2839;2414;...                                                                                                                                                                                                                                                                                                                                                                                                                                 
4  84358402;M;2029;1434;1351;1297;1003;1328;198;1...   

这正是我所期望的。现在我想删除前两列,以id:

开头
df = df.drop(columns=['id'], axis=1)
print(df.head())

,这里我得到以下错误:

KeyError: "['id'] not found in axis"

我知道这个问题以前已经以不同的形式被问过,但通常答案是:修改轴。我的轴参数已经设置好了。我已经仔细检查了我的列中没有额外的空格字符,实际上只有'id'。为什么找不到这个列名?有人能解释一下吗?

我认为,当你试图读取CSV文件,是采取ID列作为你的索引,所以它是更好的,如果你这样做:

df.to_csv(filename, index=False)

这样的话,我想它不会以ID作为索引。如果不工作,试试这个:

df.reset_index(drop = True).head()

这是一篇很酷的关于熊猫索引的文章。

问题:使用pd将csv文件转换为数据帧。Read_csv无法识别axis = 1中的id。

逻辑:'Drop'只能在DataFrame上使用

更正以下代码:

data = `pd.DataFrame(filename) 
filename.drop(['id'], axis = 1)`

最新更新