python - 根据条件在 Pandas 系列中分配值?

标签 python pandas dataframe series

我有一个数据框df,例如

A B
1 2
3 4

然后我想创建 2 个新系列

t = pd.Series()
r = pd.Series()

我能够使用条件 condt 赋值,如下所示

t = "1+" + df.A.astype(str) + '+' + df.B.astype(str)
cond = df['A']<df['B']
team[cond] = "1+" + df.loc[cond,'B'].astype(str) + '+' + df.loc[cond,'A'].astype(str)

但是我在使用 r 时遇到了问题。我只希望当 con 满足时,r 包含值 2,否则为 1

如果我尝试

r = 1
r[cond] = 2

然后我得到TypeError:'int'对象不支持项目分配

我想我可以通过 df 运行 for 循环,并通过 df 的每一行检查 cond 中的情况,但我是想知道 Pandas 是否提供了更有效的方法?

最佳答案

你会 mock 这是多么容易:

r = cond + 1

原因是 cond 是一个 bool 值(True 和 False),其计算结果为 1 和 0。如果向其中添加 1,它会将 bool 值强制转换为 int,这意味着 True 映射到 2,False 映射到 1。

df = pd.DataFrame({'A': [1, 3, 4], 
                   'B': [2, 4, 3]})

cond = df['A'] < df['B']

>>> cond + 1
0    2
1    2
2    1
dtype: int64

关于python - 根据条件在 Pandas 系列中分配值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35374660/

相关文章:

使用 cut() 添加十分位数列时接收 NA

javascript - 如何将数据从javascript传递到django?

python - 如何在python中匹配空格和字母数字字符

python - 将 nan 值从一个数据框复制到另一个数据框

python - 检查数据帧值中有条件的第一次出现

python - 如何从列中的值中删除重音?

python - Pandas 数据帧 : Grouping columns having the same first characters

Python从二维列表中删除元素

Python 将时间字符串转换为刻度?

python - 在什么情况下我可以使用 Dask 而不是 Apache Spark?