pandas DataFrame通过字段值快捷的刷选所在行的方法

日常提数中需要一些方便的DataFrame刷选方式,数据量并不是很大,如常用于补充维表中的信息

1、可以使用布尔索引的方式进行筛选。
以字段名为 column_name,字段值为 a 为例,可以使用以下代码实现:

import pandas as pd

df = pd.DataFrame({'column_name': ['a', 'b', 'c', 'a', 'b', 'c'],
                   'other_column': ['A', 'B', 'C', 'A2', 'B2', 'C2']})

# 通过字段值等于 'a' 进行筛选
result_df = df[df['column_name'] == 'a']

# 输出结果
print(result_df)
---------------------------
  column_name other_column
0           a            A
3           a           A2
---------------------------

如果要筛选多个条件的数据,可以使用逻辑运算符 &(与)、|(或)和 ~(非)进行组合。例如,如果要筛选 column_name 字段值等于 a 或 other_column的值为 B 的行,可以使用以下代码:

result_df = df[(df['column_name'] == 'a') | (df['other_column'] == 'B')]

# 输出结果
print(result_df)
---------------------------
  column_name other_column
0           a            A
1           b            B
3           a           A2
---------------------------

2、使用DataFrame的loc方法选择要筛选的列,并将筛选条件作为布尔表达式传递给该方法。

import pandas as pd

df = pd.DataFrame({'name': ['a', 'b', 'c', 'd', 'e', 'f'],
                   'age': [21, 14, 12, 5, 45, 23]})

# 选择age列中所有值大于等于18的行
result_df = df.loc[df['age'] >= 18]

# 输出结果
print(result_df)
--------------------
  name  age
0    a   21
4    e   45
5    f   23
--------------------

筛选多个条件,可以使用括号将每个条件括起来,并使用逻辑运算符(如&和|)组合起来。

# 选择age列中所有值大于等于18 且 name等于a 的行
result_df = df.loc[(df['age'] >= 18) & (df['name'] == 'a')]

# 输出结果
print(result_df)
------------------
  name  age
0    a   21
------------------

如果要选择特定列中具有特定值的行,可以使用isin()方法.例如需要name为b和f的行

result_df = df.loc[df['name'].isin(['b', 'f'])]

# 输出结果
print(result_df)
-----------------
  name  age
1    b   14
5    f   23
-----------------

注意,如果DataFrame非常大,则需要使用更高效的方法来处理数据,如使用查询(query)方法或使用NumPy的布尔索引技术。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值