通过行名称删除:
df = df.drop(['1', '2']) # 不指定axis默认为0
df.drop(['1', '3'], inplace=True)
通过行号删除:
df.drop(df.index[0], inplace=True) # 删除第1行
df.drop(df.index[0:3], inplace=True) # 删除前3行
df.drop(df.index[[0, 2]], inplace=True) # 删除第1第3行
df.drop('columns',axis=1)#删除不改表原始数据,可以通过重新赋值的方式赋值该数据
df.drop('columns',axis=1,inplace='True') #改变原始数据
通过筛选可以实现很多功能,例如要对某行数据去重,可以获取去重后的index列表后,
chooses = df['B'].drop_duplicates().index
df.loc[chooses]
# 删除A列,会就地修改
del df['A']
# 通过列名称删除:
df = df.drop(['B', 'C'], axis=1) # drop不会就地修改,创建副本返回
df.drop(['B', 'C'], axis=1, inplace=True) # inplace=True会就地修改
# 使用列数删除,传入参数是int,列表,者切片:
df.drop(df.columns[0], axis=1, inplace=True) # 删除第1列
df.drop(df.columns[0:3], axis=1, inplace=True) # 删除前3列
df.drop(df.columns[[0, 2]], axis=1, inplace=True) # 删除第1第3列
# loc,at,set_value,append
# 想增加一行,行名称为‘5’,内容为[16, 17, 18, 19]
df.loc['5'] = [16, 17, 18, 19]
df.at['5'] = [16, 17, 18, 19]
df.set_value('5', df.columns, [16, 17, 18, 19], takeable=False)
# warning,set_value会被取消
df = df.append(s)
# 逐行增加
df.loc[len(df)] = [16, 17, 18, 19]
# 注意:len(df)生成的是int,如果生成的int,df已经存在了,会覆盖该行数据,而不会新增
# 插入行
df = df.reindex(index=df.index.insert(2, '5'))
df.loc['5'] = [16, 17, 18, 19]
# 通过apply获取序列,s为Series
s = df.apply(lambda row: row['A'] + row['C'], axis=1)
s = df['A'] + df['C'] # 通过Series矢量相加获取序列
# 通过df[]或者df.loc添加序列
df.loc[:, 'E'] = s
df['E'] = s
# 指定插入位置,和插入列名称
df.insert(0, 'E', s)
# concat
s = pd.Series([16, 17, 18, 19], name='E', index=df.index)
df = pd.concat([df, s], axis=1)
# 逐列增加
df[len(df)] = [16, 17, 18, 19]
# 注意:len(df)生成的是int,如果生成的int,df已经存在了,会覆盖该列数据,而不会新增
DataFrame删除指定行和列(drop)
pandas删除某些列、行总结