最后的BUG点一定要看,欢迎评论补充。
相同点:
loc和iloc均可剪切行和剪切列
区别:
loc:通过名称(表头名,行号名)进行剪切
iloc:通过默认的索引号进行剪切
数据:
data = pd.DataFrame([[1,4, 7],[2, 5, 7],[3, 6, 9]],columns=['A',77,88,],index = [33,11,22]) print(data )
A 77 88
33 1 4 7
11 2 5 7
22 3 6 9
列的剪切:
格式:loc为例 loc(行名,列名)
#loc
print(data.loc[:,['A',88]])#:表示所有的行,所以剪切出满足要求的所有的行和列名为A和88的数据
结果:
A 88
33 1 7
11 2 7
22 3 9
#iloc
print(data.iloc[:,[0,2]])
结果:
A 88
33 1 7
11 2 7
22 3 9
补充:此操作结果与直接使用 data[['A',88]]结果一样
行的剪切:
#loc
print(data.loc[[22]])
结果:
A 77 88
22 3 6 9
print(data.iloc[[0]])
结果:
A 77 88
33 1 4 7
注意:这里的中括号时两个。
川叶提醒:
BUG点:
1. 使用默认的列名,机器学习在进行均值填充处理后会重新默认排序。例如,你有十维特征(使用默认表头0,1,2,3....7,8,9),第八维特征因为缺失值过多将第八维特征删去。现在表头为(1,2....,7,9)进行均值填充后会重新进行排序变成0,1,2,3....7,8.。随意不要因为麻烦不给特征命名。
2.关于列重新命名如下
Xtrain.columns = [i for i in range(0,columnNumber)]
前车之鉴,后车之师。
希望可以让大家在以后的路上少走弯路。祝大家科研道路、工作道路顺利。