python - 在 pandas 中使用不同类型的 elif 创建数据框列

标签 python pandas indexing conditional-statements multiple-columns

这是 question 的扩展.

我想做一些 if/elif/else 逻辑来创建数据框列,伪代码示例:

if Col1 = 'A' and Col2 = 1 then Col3 = 'A1'
else if Col1 = 'A' and Col2 = 0 then Col3 = 'A0'
else Col3 = 'XX'

可以混合使用类型吗?我收到此错误:

TypeError: cannot compare a dtyped [int64] array with a scalar of type [bool]

最佳答案

我认为你可以使用:

df['Col3'] = 'XX'
df.loc[(df.Col1 == 'A') & (df.Col2 == 1), 'Col3'] = 'A1'
df.loc[(df.Col1 == 'A') & (df.Col2 == 0), 'Col3'] = 'A0'

带双 numpy.where :

df["Col3"] = np.where((df.Col1 == 'A') & (df.Col2 == 1) , "A1", 
             np.where((df.Col1 == 'A') & (df.Col2 == 0), 'A0', 'XX'))

示例:

df = pd.DataFrame({'Col1':['A','B','A','B'],
                   'Col2':[1,1,0,0]})

print (df)
  Col1  Col2
0    A     1
1    B     1
2    A     0
3    B     0

df['Col3'] = 'XX'
df.loc[(df.Col1 == 'A') & (df.Col2 == 1), 'Col3'] = 'A1'
df.loc[(df.Col1 == 'A') & (df.Col2 == 0), 'Col3'] = 'A0'

df["Col4"] = np.where((df.Col1 == 'A') & (df.Col2 == 1) , "A1", 
             np.where((df.Col1 == 'A') & (df.Col2 == 0), 'A0', 'XX'))

print (df)
  Col1  Col2 Col3 Col4
0    A     1   A1   A1
1    B     1   XX   XX
2    A     0   A0   A0
3    B     0   XX   XX

关于python - 在 pandas 中使用不同类型的 elif 创建数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39247591/

相关文章:

python - 如何从 Python 中的串联子字符串索引中删除空格?

python - 如何在乘以 pandas DataFrames 时将 NaN 或非对齐值视为 1 或 0

python - 导入中断,因为库无法导入自己的模块

python - 无法在 CNTK python 中评估图像

具有共享变量的 Python 多处理/线程只能读取

python - 如何将列合并为 Python 中的单个列?

python - 查找前一行的值是否为最大值

javascript - 使用 Python 和 MongoDB 进行实时分析

python - 如何正确分配给 pandas 中的多索引数据帧的切片?

mysql - 使用索引优化mysql查询