- 前言
- 一、DataFrame创建
- 1.基于列表创建
- 2.基于字典创建
- 二、查询
- 1.df直接查询
- ① 查询一列
- ② 条件查询
- 2.query()方法
- ① 条件查询
- ② 带有变量的查询(用@变量)
- 三、增加
- 1.增加列
- ① 直接加:在最后一列加新的列
- ② insert方法:可以指定位置加
- 2.增加行
- ① loc函数:增加一行
- ② 增加多行
- 四、更新(改)
- 1. 更新整行值
- 2. 更新某个值
- 五、删除
- 1. 删除行
- 2. 删除列
- 六、遍历
前言
本篇文章将会持续更新,记录在日常工作中,容易遇到的pandas库DataFrame中的常用操作。
一、DataFrame创建 1.基于列表创建
data = [['Jack', 10], ['Tom', 12], ['Lucy', 13]] columns = ['Name', 'Age'] df_by_list = pd.DataFrame(data, columns=columns) print(df_by_list)
输出:
Name Age 0 Jack 10 1 Tom 12 2 Lucy 132.基于字典创建
row = {
'Name': ['Jack', 'Tom', 'Lucy'],
'Age': [10, 12, 13]
}
df_by_dict = pd.DataFrame(row)
print(df_by_dict)
输出:
Name Age 0 Jack 10 1 Tome 12 2 Lucy 13二、查询 1.df直接查询 ① 查询一列
names = df['Name'].tolist() print(names)
输出:
['Jack', 'Tom', 'Lucy']
② 条件查询
ages = df[(df['Age'] > 10) & (df['Age'] < 13)] print(ages)
输出:
Name Age 1 Tom 122.query()方法 ① 条件查询
result = df.query('Age > 10 & Age < 13')
print(result)
输出:
Name Age 1 Tom 12② 带有变量的查询(用@变量)
names = ['Tom', 'Lily', 'Sam']
result = df.query('Name not in @names')
print(result)
输出:
Name Age 0 Jack 10 2 Lucy 13三、增加 1.增加列 ① 直接加:在最后一列加新的列
df['Gender'] = ['M', 'M', 'F'] print(df)
输出:
Name Age Gender 0 Jack 10 M 1 Tom 12 M 2 Lucy 13 F② insert方法:可以指定位置加
df.insert(0, 'Gender', ['M', 'M', 'F']) print(df)
输出:
Gender Name Age 0 M Jack 10 1 M Tom 12 2 F Lucy 132.增加行 ① loc函数:增加一行
df.loc[len(df.index)] = ('Lily', 20)
print(df)
输出:
Name Age 0 Jack 10 1 Tom 12 2 Lucy 13 3 Lily 20
注意: 如果不加在最后一行,数据将会被替换,例:
df.loc[1] = ('Lily', 20)
print(df)
输出:
Name Age 0 Jack 10 1 Lily 20 2 Lucy 13② 增加多行
data1 = [['Lily', 23], ['Sam', 35]] columns1 = ['Name', 'Age'] df1 = pd.DataFrame(data1, columns=columns1) df2 = pd.concat([df, df1], ignore_index=True) print(df2)
输出:
Name Age 0 Jack 10 1 Tom 12 2 Lucy 13 3 Lily 23 4 Sam 35
注意:
1.ignore_index=True 参数表示重新设置索引
2.append方法即将过时,建议用concat方法
3.concat方法要求两个df需要有相同的列名
data1 = [['Lily', 23], ['Sam', 35]] columns1 = ['Name', 'Age'] new_df = pd.DataFrame(data1, columns=columns1) df.update(new_df) print(df)
输出:
Name Age 0 Lily 23.0 1 Sam 35.0 2 Lucy 13.02. 更新某个值
df.loc[0, 'Age'] = 25 print(df)
输出:
Name Age 0 Jack 25 1 Tom 12 2 Lucy 13五、删除 1. 删除行
df = df.drop(df[(df['Age'] > 10) & (df['Age'] < 13)].index) print(df)
输出:
Name Age 0 Jack 10 2 Lucy 132. 删除列
df = df.drop('Age', axis=1)
print(df)
输出:
Name 0 Jack 1 Tom 2 Lucy
注意:
DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False)
- labels:要删除的行或列,用列表给出
- axis:默认为0,指要删除的是行,删除列时需指定axis为1
- index :直接指定要删除的行,删除多行可以使用列表作为参数
- columns:直接指定要删除的列,删除多列可以使用列表作为参数
- inplace: 默认为False,该删除操作不改变原数据;inplace = True时,改变原数据
for index, row in df.iterrows():
print(index)
print(row['Name'])
print(row['Age'])
输出:
0 Jack 10 1 Tom 12 2 Lucy 13
注意: 这里的iterrows()返回值为元组,(index,row),index即为行索引,row就是一行的所有数据,可通过字段名获取到



