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

【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 的数据提取出来并重新赋值,这个过程会更改原本的数据,所以一般要拷贝一份再做修改!

        (参考:Pandas:DataFrame数据的更改、插入新增的列和行

相关标签: Python python

上一篇: 解方程组

下一篇: 矩阵代数