如何在pandas数据帧中的列之间进行条件计算?

李佑根

这是一个简单的数据框

import pandas as pd
import numpy as np
dates = pd. date_range(' 20130101' , periods=14)
data = pd.DataFrame({'a':[1,0,0,1,0,0,0,1,1,0,0,1,0,0],'b':[0,0,1,0,0,1,0,0,0,0,1,0,1,0]},index=dates)

现在我想添加列“c”,同时满足以下条件。

  1. if a = 1, c = 1
  2. if b = 1, c = 0
  3. if a = 0 and b = 0, c = c.shift(1)约束:不存在a = 1b = 1同时存在的情况

这是一个简单的问题,但很难解决......

有什么好主意吗?

耶斯列

IIUC你需要:

data['c'] = np.where(data.a == 1, 1,
            np.where(data.b == 1, 0, np.nan))
print (data)
            a  b    c
2013-01-01  1  0  1.0
2013-01-02  0  0  NaN
2013-01-03  0  1  0.0
2013-01-04  1  0  1.0
2013-01-05  0  0  NaN
2013-01-06  0  1  0.0
2013-01-07  0  0  NaN
2013-01-08  1  0  1.0
2013-01-09  1  0  1.0
2013-01-10  0  0  NaN
2013-01-11  0  1  0.0
2013-01-12  1  0  1.0
2013-01-13  0  1  0.0
2013-01-14  0  0  NaN

然后我不确定是否需要bfillffill

data['c'] = data['c'].bfill()
print (data)
            a  b    c
2013-01-01  1  0  1.0
2013-01-02  0  0  0.0
2013-01-03  0  1  0.0
2013-01-04  1  0  1.0
2013-01-05  0  0  0.0
2013-01-06  0  1  0.0
2013-01-07  0  0  1.0
2013-01-08  1  0  1.0
2013-01-09  1  0  1.0
2013-01-10  0  0  0.0
2013-01-11  0  1  0.0
2013-01-12  1  0  1.0
2013-01-13  0  1  0.0
2013-01-14  0  0  NaN

data['c'] = data['c'].ffill()
print (data)
            a  b    c
2013-01-01  1  0  1.0
2013-01-02  0  0  1.0
2013-01-03  0  1  0.0
2013-01-04  1  0  1.0
2013-01-05  0  0  1.0
2013-01-06  0  1  0.0
2013-01-07  0  0  0.0
2013-01-08  1  0  1.0
2013-01-09  1  0  1.0
2013-01-10  0  0  1.0
2013-01-11  0  1  0.0
2013-01-12  1  0  1.0
2013-01-13  0  1  0.0
2013-01-14  0  0  0.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Pandas:如何根据 2 个单独数据帧的两列之间的条件进行连接

如何根据pandas python中的条件在两个不同的数据帧之间进行列操作

如何在python中对pandas数据帧的每一行进行计算?

如何在另一个数据帧 python pandas 中的多列上使用条件逻辑在数据帧中创建一列?

向 Pandas 数据框添加一列,并在行值和条件之间进行计算

使用 if 条件(Pandas)在不同数据帧上的列之间查找

如何自动对 Pandas 数据帧的行进行重复计算?

如何根据pandas数据帧中的过滤器进行分组和计算最大值

如何在R中的两个数据帧之间编程条件值?

如何根据2列之间的条件连接数据帧

如何从另一列计算pandas数据帧列中匹配项的数量?

如何在R Shiny中对数据帧进行条件格式化?

如何根据列中的条件进行计算?

根据数据帧中的条件进行分组的列

如何计算 Pandas 数据帧列中的浮点数或整数数?

如何在python中的列数据帧上的特殊字符之间提取字符串?

如何在R中的数据帧的2列之间使用一对一的grep

如何基于R中的条件对数据帧进行子集

从数据帧计算列条件分布

如何计算特定列中的项目/值在 Pandas 数据帧的另一列/其他列中重复的次数?

如何在 python 中对数据帧的标记化列进行词形还原?

如何在R中为此数据帧计算差异

如何在R中的脚本之间共享数据帧

Pandas 数据帧根据条件从同一数据帧中的两列中减去值?

如何计算python3数据帧中列的频率

如何计算数据帧列中的时间增量

如何在R中对多个数据帧进行排序

如何在没有UDF的情况下如何计算PySpark数据帧中数组列中的尾随零

在Pandas数据框中,如何在第二列的条件下提取同一列中不同行的值之间的差异?