Skip to main content
 首页 » 编程设计

python之如何根据条件创建新列

2025年05月04日19jpfss

我有以下数据框df:

col1  col2 
1     C 
1     B 
1     A 
2     C 
2     C 
3     A 
3     C 
3     B 

我需要创建一个新列 col3 并为每个唯一的 col1 分配 T 或 F:对于每个唯一的 col1,如果至少一行等于 col2 中的 A,则 col3 等于 T。否则,它等于 F。

预期结果:

col1  col2  col3 
1     C     T 
1     B     T 
1     A     T 
2     C     F 
2     C     F 
3     A     T 
3     C     T 
3     B     T 

我该怎么做?我尝试使用 apply(lambda ...) 解决方案,但它按行进行并仅在 col1 为 1 时分配 T(基本上是因为 1 的最后一行等于A).

请您参考如下方法:

您还可以像这样使用 numpy 的 where 函数:

>> import numpy as np 
>> df['col3'] = np.where(df['col1'].isin(df[df['col2']=='A']['col1'].unique()), 'T', 'F') 
>> print(df) 
   col1 col2 col3 
0     1    C    T 
1     1    B    T 
2     1    A    T 
3     2    C    F 
4     2    C    F 
5     3    A    T 
6     3    C    T 
7     3    B    T