2 回答
TA贡献1865条经验 获得超7个赞
您可以使用np.where
:
In [1696]: df['d'] = np.where(df['a'].isin(['A', 'B']), df['b'], df['c'])
In [1697]: df
Out[1697]:
a b c d
0 A 1.0 10.0 1.0
1 B 2.0 20.0 2.0
2 C 3.0 30.0 30.0
3 A 4.0 40.0 4.0
4 B 5.0 50.0 5.0
5 C 6.0 60.0 60.0
6 A 7.0 70.0 7.0
7 B 8.0 80.0 8.0
8 C 9.0 90.0 90.0
9 A 10.0 100.0 10.0
TA贡献1785条经验 获得超4个赞
您可以使用isin和np.select:
df['d'] = np.select( (df.a.isin(['A','B']), df.a.eq('C')),
(df.b, df.c), np.nan)
如果a列A,B,C仅包含示例数据中所示的值,您可以简单地使用np.where:
df['d'] = np.where(df.a.isin(['A','B']), df.b, df.c)
# or
# df['d'] = np.where(df.a.eq('C'), df.c, df.b)
添加回答
举报