【20210907】【Python】修改Dataframe符合条件的行、列值
程序员文章站
2022-03-05 20:26:13
...
这个问题源于工作中,想要修改某一个 dataframe 的最后一列的值,最后一列是标签(0, 1, 2, 3, 4),想要把大于 1 的标签都置为 1,因为我操作不当,把标签大于 1 的所在行所有值都置成了 1,导致模型训练结果有误,特此记录~
1. loc 和 iloc 可以更换单行、单列、多行、多列的值。
两者区别在于:loc 可以通过index 和 columns 获取修改,但 iloc 只能通过索引位置来查找。
2. at 和 iat 只可以更换单个值
两者区别在于:at 可以通过index 和 columns 获取修改,但 iat 只能通过索引位置来查找。
def multiToSingleType(DataSet):
DataSet_copy = DataSet.copy()
rows_normal = DataSet_copy[DataSet_copy['标签']<1] # 获取标签小于1所在行的数据(得到一个dataframe)
rows_abnormal = DataSet_copy[DataSet_copy['标签']>0] # 获取标签大于0所在行的数据(得到一个dataframe)
for i in range(rows_normal.shape[0]):
DataSet_copy.loc[rows_normal.index[i], '标签'] = 0 # 将标签小于1所在行的标签置为0
for j in range(rows_abnormal.shape[0]):
DataSet_copy.loc[rows_abnormal.index[j], '标签'] = 1 # 将标签大于0所在行的标签置为1
return DataSet_copy
注意:更改 dataframe 的数据,本质上是把 dataframe 的数据提取出来并重新赋值,这个过程会更改原本的数据,所以一般要拷贝一份再做修改!
推荐阅读
-
使用Python的Dataframe取两列时间值相差一年的所有行方法
-
对Python中DataFrame选择某列值为XX的行实例详解
-
DataFrame根据条件对另一列的值进行修改
-
python:按列条件筛选、删除DataFrame中满足列条件的行
-
Python Dataframe对符合条件的行或列应用函数
-
Python Pandas中Dataframe对象,如何根据列值筛选满足条件的行,并且获得行的索引值
-
pandas dataframe 先根据条件过滤某些行然后再修改列数据的替代方案
-
Python小点dian儿: 按列条件筛选、删除DataFrame的行
-
python基于pandas对DataFrame的行与列进行删除、修改、新增
-
使用Python的Dataframe取两列时间值相差一年的所有行方法