pandas删除行删除列,增加行增加列

df = pd.DataFrame(np.arange(16).reshape(4, 4), columns=list(‘abcd‘), index=[‘1‘, ‘2‘, ‘3‘, ‘4‘])
print(df)
     a    b    c    d
1   0    1    2    3
2   4    5    6    7
3   8    9   10  11
4  12  13  14  15

1,根据列名称删除列
方法一,用del
     del df[‘b‘]  # 删除b列,好像无法删除多列
方法二,用drop,删除b,c列,下列三种方法等价
     df = df.drop([‘b‘, ‘c‘], axis=1)  # 默认drop不会替换掉原df,即inplace为False
     df.drop([‘b‘, ‘c‘], axis=1, inplace=True)  # inplace为True则直接替换掉了原df
     df.drop(df.columns[[1,2]], axis=1, inplace=True)

2,根据索引名称删除行
     df = df.drop([‘1‘, ‘2‘])   # 删除index为1和2的行,注意创建df时将index设置为str了,默认是int,还有2种等价方法参考列drop

3,根据value值删除行
     df= df[~df[‘b‘].isin([‘5‘, ‘9‘])]  # 用bool筛选方法,删除b列中含有5,9的行

4,根据value值去重删除行
      df.loc[‘2‘,‘b‘]=9   #此时b列有2个含有9了,要去重删除一个
      df=df.loc[df[‘b‘].drop_duplicates().index]

5,增加行
方法一,loc增加
     df.loc[‘5‘] = [3, 3, 3, 3]
方法二,用set_value
     df.set_value(‘5‘, df.columns, [3,3,3,3], takeable=False)

备注:df增加行没找到类似insert这种(列有),可以插入行的方法,暂时替代方法:
    df.loc[‘5‘] = [3, 3, 3, 3]
    df = df.reindex(index = list(‘12534‘))
    或者:
    list = df.index
    df.loc[‘5‘] = [3, 3, 3, 3]
    df = df.reindex(index = list.insert(2, ‘5‘))

6,df增加列
方法一:iloc遍历赋值
    有时可能需要遍历赋值,例如新增一列e,等于c列和d列值的和,这种方法能成功,但有 SettingWithCopyWarning告警,查了下貌似推荐用loc遍历
    df[‘e‘] = np.NaN  # 需事先创建e列,否则iloc遍历会报错,loc遍历无需事先创建
    for i in range(len(df)):
         df[‘e‘].iloc[i] = df[‘c‘].iloc[i] + df[‘d‘].iloc[i]
方法二:loc遍历赋值(推荐!!)
    for i in df.index:
        df.loc[i, ‘e‘] = df.loc[i, ‘c‘] + df.loc[i, ‘d‘]
方法三:loc一次性赋值
     df.loc[:, ‘e‘] = [x + y for x, y in zip(df[‘c‘], df[‘d‘])]
     df.loc[[‘2‘, ‘3‘], ‘e‘] = [3, 3]   # 也可以只选第2第3行复制
方法四:insert
    df.insert(0, ‘e‘, [3, 3, 3, 3])   # 加在第一列
方法五:直接加
    df[‘e‘] = [3, 3, 3, 3]    # 加在最后一列
方法六:其他
    增加3列,efg,value默认为np.NaN
    df = pd.concat([df, pd.DataFrame(columns=list(‘efg‘))])   # 列的次序无法指定,并且fillna时会对整个df做出调整
    df = df.reindex(columns=list(‘abcdefg‘),  fill_value=0)   # 列的次序按照list指定,并且fill_value只对新增列做出调整,推荐!

原文地址:https://www.cnblogs.com/guxh/p/9420610.html

时间: 2024-11-08 21:46:04

pandas删除行删除列,增加行增加列的相关文章

C# DataTable 增加行与列

原文地址:http://blog.csdn.net/u013084746/article/details/53024266 方法一: DataTable table =new DataTable(); //创建table的第一列 DataColumn priceColumn =new DataColumn(); priceColumn.DataType = System.Type.GetType("System.Decimal");//该列的数据类型 priceColumn.Colum

js 动态增加行删除行

1 <body> 2 <table id="tableID" border="1" align="center" width="60%"> 3 <tr> 4 <th>用户名</th> 5 <th>邮箱</th> 6 <th>操作</th> 7 </tr> 8 <tbody id="tbodyI

SQL语句增加列、修改列类型、修改列、删除列

1.增加列: alter table tableName add columnName varchar(30) 2.修改列类型: alter table tableName alter column columnName varchar(4000) 3.修改列的名称: EXEC sp_rename 'tableName.column1' , 'column2' (把表名为tableName的column1列名修改为column2) 4.删除列: alter table tableName dro

oracle修改表、增加列、删除列、修改列

1.增加列 ALTER TABLE table_name ADD( column datatype [DEFAULT EXPR][,column datatype...]); 例如: SQL>ALTER TABLE emp01 ADD eno NUMBER(4); 2.修改列定义 例如: SQL>ALTER TABLE emp01 MODIFY job VARCHAR2(15) 2    DEFAULT 'CLERK' 3.删除列 例如: SQL> ALTER TABLE emp01 D

SQL语句增加列、修改列、删除列

SQL语句增加列.修改列.删除列 1.增加列: 1.alter table tableName add columnName varchar(30) 2.ALTER TABLE dbo.doc_exa ADD column_b VARCHAR(20) NULL, column_c INT NULL ; 2.1. 修改列类型: 1.alter table tableName alter column columnName varchar(4000) 2.2. 修改列的名称: 1.EXEC sp_r

SQL 增加列、修改列、删除列

SQL语句增加列.修改列.删除列 1.增加列: alter table tableName add columnName varchar(30) 2.1. 修改列类型: alter table tableName alter column columnName varchar(4000) 2.2. 修改列的名称: EXEC sp_rename 'tableName.column1' , 'column2' (把表名为tableName的column1列名修改为column2) 3.删除列: al

JQuery实现表格动态增加行并对新行添加事件

实现功能: 通常在编辑表格时表格的行数是不确定的,如果一次增加太多行可能导致页面内容太多,反应变慢:通过此程序实现表格动态增加行,一直保持最下面有多个空白行. 效果: 一:原始页面 二:表1增加新行并绑定timepicker 三:表2自动增加行,新行绑定timepicker HTML源码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

Oracle中对现有表增加列

alter   table   Tablename   add(column1   varchar2(20),column2   number(7,2)...) Oracle中修改列名不可以,但是可以删除列,增加列 alter   table   Tablename   drop   column   column1   alter   table   Tablename   add(column1   varchar2(20),column2   number(7,2)...)

c# datatable增加列并赋值

DataView dv = DataObj.GetBmfzr("03").Tables[0].DefaultView; dv.Sort = "bmbh"; DataTable dt = ds.Tables[0]; dt.Columns.Add("bkzz",typeof(string)); foreach (DataRow rs in dt.Rows) { string fzr = ""; DataRowView[] drv