pandas2.2 dataframe
indexing, iteration
方法 | 描述 |
---|---|
dataframe.head([n]) | 用于返回 dataframe 的前几行 |
dataframe.at | 快速访问和修改 dataframe 中单个值的方法 |
dataframe.iat | 快速访问和修改 dataframe 中单个值的方法 |
dataframe.loc | 用于基于标签(行标签和列标签)来访问和修改 dataframe 中的数据 |
dataframe.iloc | 用于基于整数位置(行号和列号)来访问和修改 dataframe 中的数据 |
dataframe.insert(loc, column, value[, …]) | 用于在 dataframe 的指定位置插入一个新的列 |
dataframe.iter() | 用于迭代 dataframe 的列名 |
dataframe.items() | 用于迭代 dataframe 的列名和列数据 |
dataframe.keys() | 返回 dataframe 的列名 |
dataframe.iterrows() | 用于逐行迭代 dataframe |
dataframe.itertuples([index, name]) | 用于逐行迭代 dataframe |
dataframe.pop(item) | 用于从 dataframe 中删除指定列 |
dataframe.tail([n]) | 用于返回 dataframe 的最后 n 行 |
dataframe.xs(key[, axis, level, drop_level]) | 用于从 dataframe 中提取一个横截面(cross-section) |
dataframe.get(key[, default]) | 用于从 dataframe 中获取指定列的数据 |
dataframe.isin(values) | 用于检查 dataframe 中的每个元素是否包含在指定的值集合中 |
dataframe.where(cond[, other, inplace, …]) | 用于根据条件筛选 dataframe 中的元素 |
pandas.dataframe.where()
pandas.dataframe.where(cond, other=nan, *, inplace=false, axis=none, level=none)
方法用于根据条件筛选 dataframe 中的元素。如果条件为 true
,则保留元素;如果条件为 false
,则用 other
参数指定的值替换该元素。
参数
cond
:布尔条件,可以是布尔值、布尔数组、布尔 dataframe 或布尔 series。other
:可选参数,当条件为false
时使用的值。默认为nan
。inplace
:布尔值,如果为true
,则直接在原 dataframe 上进行修改,否则返回一个新的 dataframe。默认为false
。axis
:指定轴,0
或'index'
表示按行,1
或'columns'
表示按列。默认为none
。level
:如果索引是多级索引,指定要使用的级别。默认为none
。
返回值
- 如果
inplace=false
,返回一个新的 dataframe。 - 如果
inplace=true
,返回none
。
示例
假设我们有一个 dataframe 如下:
import pandas as pd import numpy as np data = { 'a': [1, 2, 3, 4], 'b': [5, 6, 7, 8] } df = pd.dataframe(data) print("原始 dataframe:") print(df)
输出:
原始 dataframe:
a b
0 1 5
1 2 6
2 3 7
3 4 8
示例 1:使用布尔条件替换值
将 a
列中大于 2 的值替换为 nan
:
result = df.where(df['a'] <= 2) print("\n将 a 列中大于 2 的值替换为 nan:") print(result)
输出:
将 a 列中大于 2 的值替换为 nan:
a b
0 1.0 5.0
1 2.0 6.0
2 nan nan
3 nan nan
示例 2:使用布尔条件和自定义替换值
将 a
列中大于 2 的值替换为 0
:
result = df.where(df['a'] <= 2, other=0) print("\n将 a 列中大于 2 的值替换为 0:") print(result)
输出:
将 a 列中大于 2 的值替换为 0:
a b
0 1 5
1 2 6
2 0 0
3 0 0
示例 3:使用布尔 dataframe 替换值
将 a
列中大于 2 的值替换为 nan
,b
列中大于 6 的值替换为 nan
:
cond = (df['a'] <= 2) & (df['b'] <= 6) result = df.where(cond) print("\n将 a 列中大于 2 的值和 b 列中大于 6 的值替换为 nan:") print(result)
输出:
将 a 列中大于 2 的值和 b 列中大于 6 的值替换为 nan:
a b
0 1.0 5.0
1 2.0 6.0
2 nan nan
3 nan nan
示例 4:使用 inplace=true 直接修改原 dataframe
将 a
列中大于 2 的值替换为 0
,直接修改原 dataframe:
df.where(df['a'] <= 2, other=0, inplace=true) print("\n直接修改原 dataframe:") print(df)
输出:
直接修改原 dataframe:
a b
0 1 5
1 2 6
2 0 0
3 0 0
示例 5:使用多级索引
假设我们有一个多级索引的 dataframe:
index = pd.multiindex.from_tuples([('a', 'x'), ('a', 'y'), ('b', 'x'), ('b', 'y')], names=['first', 'second']) df = pd.dataframe(data, index=index) print("原始 dataframe:") print(df)
输出:
原始 dataframe:
a b
first second
a x 1 5
y 2 6
b x 0 0
y 0 0
使用 where
方法并指定 level
参数:
result = df.where(df['a'] <= 2, level='first') print("\n使用 where 方法并指定 level 参数:") print(result)
输出:
使用 where 方法并指定 level 参数:
a b
first second
a x 1.0 5.0
y 2.0 6.0
b x nan nan
y nan nan
总结
pandas.dataframe.where
方法提供了一种灵活的方式来根据条件筛选和替换 dataframe 中的元素。你可以使用布尔条件、布尔数组或布尔 dataframe 来指定哪些元素需要保留,哪些需要替换。通过 other
参数可以指定替换的值,默认为 nan
。inplace
参数允许你选择是否直接修改原 dataframe。这对于数据清洗和预处理非常有用。
到此这篇关于pandas dataframe where的实现示例的文章就介绍到这了,更多相关pandas dataframe where内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论