Pandas和纽比的问题在哪里条件/多重值?

2024-10-05 11:08:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下熊猫数据帧:

A  B
1  3
0  3
1  2
0  1
0  0
1  4
....
0  0

我想在右侧添加一个新列,遵循以下条件:

如果B中的值有32new_col中添加{},例如:

^{pr2}$

所以我尝试了以下方法:

df['new_col'] = np.where(df['B'] == 3 & 2,'1','0')

但是它没有起作用:

A  B new_col
1  3  0
0  3  0
1  2  1
0  1  0
0  0  0
1  4  0
....
0  0  0

你知道如何用pandas和numpy做一个多重contidion语句吗?。在


Tags: 数据方法numpypandasdfnewnpcol
3条回答

您可以使用Pandasisin,它将返回一个布尔值,显示您要查找的元素是否包含在列'B'中。在

df['new_col'] = df['B'].isin([3, 2])
   A  B new_col
0  1  3    True
1  0  3    True
2  1  2    True
3  0  1   False
4  0  0   False
5  1  4   False

然后,可以使用astypeboolean值转换为0和{},True是{},而{}是{}

^{pr2}$

输出:

   A  B  new_col
0  1  3        1
1  0  3        1
2  1  2        1
3  0  1        0
4  0  0        0
5  1  4        0

使用numpy

>>> df['new_col'] = np.where(np.logical_or(df['B'] == 3, df['B'] == 2), '1','0')
>>> df
   A  B new_col
0  1  3       1
1  0  3       1
2  1  2       1
3  0  1       0
4  0  0       0
5  1  4       0
df['new_col'] = [1 if x in [2, 3] else 0 for x in df.B]

运算符* + ^按预期对布尔运算,与整数混合会得到预期的结果。所以你也可以:

^{pr2}$

相关问题 更多 >

    热门问题