一、基础知识回顾
在开始之前,让我们先回顾一下pandas dataframe的基础知识。dataframe是pandas中的一个核心数据结构,它可以看作是一个表格,拥有行和列,可以存储不同类型的数据。示例如下:
import pandas as pd
# 创建一个简单的dataframe
data = {
'name': ['alice', 'bob', 'charlie', 'david'],
'age': [25, 30, 35, 40],
'city': ['new york', 'los angeles', 'chicago', 'houston']
}
df = pd.dataframe(data)
print(df)
输出:
name age city
0 alice 25 new york
1 bob 30 los angeles
2 charlie 35 chicago
3 david 40 houston
二、筛选含有特定值的行
在pandas中,我们可以使用布尔索引来筛选含有特定值的行。布尔索引就是根据每个元素是否满足某个条件(返回true或false)来筛选数据。
# 筛选年龄大于30的行 df_filtered = df[df['age'] > 30] print(df_filtered)
上面的代码会筛选出年龄大于30的行,并返回一个新的dataframe:
name age city
2 charlie 35 chicago
3 david 40 houston
三、删除含有特定值的行
如果我们想从原始dataframe中删除满足某个条件的行,可以使用drop方法。
# 删除年龄大于30的行
df_dropped = df.drop(df[df['age'] > 30].index)
print(df[df['age'] > 30].index)
print("*"*30)
print(df_dropped)
上面的代码会删除年龄大于30的行,并返回一个新的dataframe:
index([2, 3], dtype='int64')
******************************
name age city
0 alice 25 new york
1 bob 30 los angeles
四、筛选含有特定值的列
同样地,我们也可以筛选含有特定值的列。
# 筛选城市为"chicago"的列
df_filtered_columns = df[df['city'] == 'chicago']
print(df['city'] == 'chicago')
print("*"*30)
print(df_filtered_columns)
上面的代码会筛选出城市为"chicago"的列,并返回一个新的dataframe:
0 false
1 false
2 true
3 false
name: city, dtype: bool
******************************
name age city
2 charlie 35 chicago
五、删除含有特定值的列
要删除含有特定值的列,我们可以使用drop方法,并指定columns参数。
# 删除城市为"chicago"的列 df_dropped_columns = df.drop(columns=['city']) print(df_dropped_columns)
上面的代码会删除城市列,并返回一个新的dataframe:
name age
0 alice 25
1 bob 30
2 charlie 35
3 david 40
注意:筛选和删除操作默认返回的是一个新的dataframe,不会改变原始的dataframe。
六、实战演练
假设我们有一个包含学生信息的dataframe,我们要筛选出年龄大于15且城市为"new york"的学生。
import pandas as pd
# 创建一个包含学生信息的dataframe
student_data = {
'name': ['alice', 'bob', 'charlie', 'david', 'eve', 'frank'],
'age': [22, 25, 18, 28, 21, 27],
'city': ['new york', 'los angeles', 'chicago', 'houston', 'new york', 'san francisco']
}
student_df = pd.dataframe(student_data)
print("原始dataframe:")
print(student_df)
# 筛选年龄大于1且5城市为"new york"的学生
filtered_students = student_df[(student_df['age'] > 15) & (student_df['city'] == 'new york')]
print("\n筛选后的dataframe:")
print(filtered_students)
上面的代码会筛选出年龄大于15且城市为"new york"的学生,并打印出筛选后的dataframe:
原始dataframe:
name age city
0 alice 22 new york
1 bob 25 los angeles
2 charlie 18 chicago
3 david 28 houston
4 eve 21 new york
5 frank 27 san francisco筛选后的dataframe:
name age city
0 alice 22 new york
4 eve 21 new york
七、最后
到此这篇关于python的pandas库中使用dataframe筛选和删除含特定值的行与列的文章就介绍到这了,更多相关dataframe筛选和删除特定值行与列内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论