文章目录
- 前言
- 一、删除数据
- 二、索引操作
- 1.loc方法
- 2.iloc方法
- 三、添加数据
- 1.loc方法添加数据
- 2.concat方法拼接数据
- 四、重置索引
前言
通过今天的学习,我掌握了对Pandas对象数据元素进行增删操作以及重置索引的操作
一、删除数据
- DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors=‘raise’)
- inplace参数默认情况下,drop() 不会修改原 DataFrame,而是返回一个新的DataFrame
data = {'one': pd.Series(data=[1, 2, 3], index=['a', 'b', 'c']),'two': pd.Series(data=[1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(data)
print(df)# 删除列
df1 = df.drop(index="a")
df2 = df.drop(labels="a",axis=0) #labels和axis参数需要搭配使用# 删除行
df1 = df.drop(columns="one")
df2 = df.drop(labels="one",axis=1)# 直接修改
df.drop(index="a",inplace=True) #这里修改了df
tips:labels参数需要和axis参数搭配使用,而单独使用index,columns可以直接删除对应的行和列
二、索引操作
1.loc方法
- DataFrame.loc[row_indexer, column_indexer]
- 使用行,列索引而非下标作为参数
data = {'A': [1, 2, 3, 4],'B': [5, 6, 7, 8],'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd'])print(df.loc['a']) # 选择行标签为 'a' 的行
print(df.loc['a':'c']) # 选择行标签从 'a' 到 'c' 的行
print(df.loc['a', 'B']) # 选择行标签为 'a',列标签为 'B' 的元素
print(df.loc[['a','c'], ['A','C']]) # 选择多行数据
print(df.loc['a':'c','A':'C']) #使用切片选择多行
print(df.loc[...,"A":"B"])
tips:注意选择多行数据和使用切片选择多行使用上有差别
2.iloc方法
- DataFrame.iloc[row_indexer, column_indexer]
- 与loc方法的区别为:使用下标而非行,列索引
print(df.iloc[0])
print(df.iloc[0:2])
print(df.iloc[1,1])
print(df.iloc[1:3,0:2])
print(df.iloc[[1,3],[0,2]])
三、添加数据
1.loc方法添加数据
data = {'A': [1, 2, 3, 4],'B': [5, 6, 7, 8],'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd'])# loc方法添加行
df.loc['e'] = [17, 18, 19]
tips:iloc方法添加行会报错
2.concat方法拼接数据
- pd.concat(objs, axis=0, join=‘outer’, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)
- axis:指定连接的轴
- join:指定连接方式,‘outer’ 表示并集(默认),‘inner’ 表示交集
- ignore_index:如果为 True,则忽略原始索引并生成新的索引
df1 = pd.DataFrame({'A': [1, 2, 3],'B': [4, 5, 6]
})df2 = pd.DataFrame({'A': [7, 8],'B': [10, 11],'C': [12,13]
})result = pd.concat([df1, df2], axis=0,ignore_index=True,join="inner")
- concat拼接Series和Dataframe
df = pd.DataFrame({'A': [1, 2, 3],'B': [4, 5, 6]
})series = pd.Series([7, 8, 9], name='C')
re = pd.concat([df,series],axis=0)
四、重置索引
- DataFrame.reindex(labels=None, index=None, columns=None, axis=None, method=None, copy=True, level=None, fill_value=np.nan, limit=None, tolerance=None)
- 可以重置索引,也可以添加新的行列,默认填充值为None
- method:用于填充缺失值的方法
- fill_value:用于填充缺失值的值
data = {'A': [1, 2, 3],'B': [4, 5, 6],'C': [7, 8, 9]
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])new_index = ['a', 'c', 'b', 'd']
df_reindexed = df.reindex(index=new_index,fill_value=666)new_columns = ['A', 'C', 'B', 'D']
df_reindexed = df.reindex(columns=new_columns,fill_value=666)
THE END