我有以下数据框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
