python - 如何根据 Pandas 数据框中的前一行添加具有值的额外列?
问题描述
我有这个数据框:
'C1'|'C2'
0 | x
1 | x1
1 | x2
2 | x3
0 | y
1 | y1
2 | y2
0 | z
1 | z1
我需要像这样创建一个额外的列:
'C1'|'C2'|'C3'
0 | x | x
1 | x1 | x
1 | x2 | x
2 | x3 | x
0 | y | y
1 | y1 | y
2 | y2 | y
0 | z | z
1 | z1 | z
基本上,当我在 C1 列中找到 0 时,我必须将 C2 列中的相应值放入所有子行(直到下一个 0)。
我是 Pandas 的新手,我读到我应该避免使用迭代操作数据框。
如何在不迭代的情况下获得这个结果?是否可以?
解决方案
如果与( )Series.where
的条件不匹配,则用于缺失值,并通过 向前填充缺失值:Series.eq
==
ffill
df['C3'] = df['C2'].where(df['C1'].eq(0)).ffill()
print (df)
C1 C2 C3
0 0 x x
1 1 x1 x
2 1 x2 x
3 2 x3 x
4 0 y y
5 1 y1 y
6 2 y2 y
7 0 z z
8 1 z1 z
推荐阅读
- c# - 缓存对象但忽略 NULL 属性以节省 .NET 中的空间
- c - POSIX AIO 回调使用相同(错误)的 sigval 重复调用
- python - Python如何使用附加条件创建滚动平均值
- filtering - 在 PostScript 中打印数组时如何过滤掉值?
- python - 如何按顺序打印字典的所有值?
- sqlite - 在 sqlite3 中运行外键查询时出现语法错误
- javascript - jquery/json - 为键创建动态数组
- reactjs - 取消选中复选框重置输入(ReactJS + Formik)
- android - 如何在 Android 虚拟设备上测试我的 Game Maker Studio 2 项目?
- python - For 循环只显示最后一个值而不是全部 | 加密货币