38人参与 • 2025-07-31 • Javascript
示例数据:
项 目 0 1 0 1 0 1 2 0 2 3 0 3 4 0 4
使用 pandas 实现当 目 列的值不为 0 时,将当前行的 项 列值修改为上一行的 项 列值:
项 目 0 1 0 1 1 1 2 1 2 3 1 3 4 1 4
import pandas as pd # 创建示例数据 df = pd.dataframe({ '项': [1, 0, 0, 0, 0], '目': [0, 1, 2, 3, 4] }) print(df) # 当`目`列不为0时,`项`列的值被替换为nan,然后向前填充 df['项'] = df['项'].mask(df['目'] != 0).ffill().astype(int) print(df)
import pandas as pd # 创建示例数据 df = pd.dataframe({ '项': [1, 0, 0, 0, 0], '目': [0, 1, 2, 3, 4] })
pd
df
,包含两列:初始数据如下:
项 目 0 1 0 1 0 1 2 0 2 3 0 3 4 0 4
df['项'] = df['项'].mask(df['目'] != 0).ffill().astype(int)
这行代码执行了多个操作,我们将其分解:
a. 条件掩码 - mask()
df['项'].mask(df['目'] != 0)
df['目'] != 0
创建一个布尔series:[false, true, true, true, true]
mask()
函数会用nan替换满足条件(true)的位置[1, nan, nan, nan, nan]
b. 向前填充 - ffill()
.ffill()
[1, 1, 1, 1, 1]
c. 类型转换 - astype(int)
.astype(int)
[1, 1, 1, 1, 1]
print(df)
输出结果:
项 目 0 1 0 1 1 1 2 1 2 3 1 3 4 1 4
这种操作在实际数据处理中很有用,例如:
.bfill()
而不是.ffill()
.fillna()
填充特定值而非前向填充这段代码展示了pandas中几个强大功能的组合使用:
mask()
:基于条件替换值ffill()
:向前填充缺失值astype()
:数据类型转换通过这种组合,可以高效地实现复杂的数据转换逻辑,这在数据预处理和分析中非常常见。理解这些基本操作的组合方式,可以帮助我们更灵活地处理各种数据清洗和转换任务。
以上就是利用pandas进行条件替换与向前填充的代码实现的详细内容,更多关于pandas条件替换与向前填充的资料请关注代码网其它相关文章!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论