pandas 列、行增删改查

一、 删除行

1.1,drop

通过行名称删除:

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') #改变原始数据

1.2  条件删除

通过筛选可以实现很多功能,例如要对某行数据去重,可以获取去重后的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]


4、df增加列 

# 通过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删除某些列、行总结

你可能感兴趣的:(pandas系列,数据处理,数据挖掘)