[英]New column from another column if value, if not, take value from another column Python Pandas
对于 pandas 中的大数据集最有效:
如果有值,我想添加一个新列Z从X中获取值,如果没有,我想从Y中获取值。
另一件事,它有可能使用三元运算添加一个新的列Z基于,如果列Y存在则列Y - 列X ,如果不存在,则只有X 。
在这两种情况下,我都在寻找最有效的方法。
谢谢
使用numpy.where
:
np.random.seed(123)
N = 10000
df = pd.DataFrame({'X':np.random.choice([np.nan, 1], size=N),
'Y':np.random.choice([3,4,6], size=N)})
df['Z1'] = np.where(df['X'].isna(), df['Y'],df['X'])
if 'Y' in df.columns:
df['Z2'] = np.where(df['X'] - df['Y'], df['Y'],df['X'])
else:
df['Z2'] = df['X']
print (df)
X Y Z1 Z2
0 NaN 6 6.0 6.0
1 1.0 4 1.0 4.0
2 NaN 6 6.0 6.0
3 NaN 3 3.0 3.0
4 NaN 3 3.0 3.0
... .. ... ...
9995 1.0 6 1.0 6.0
9996 1.0 6 1.0 6.0
9997 NaN 6 6.0 6.0
9998 1.0 4 1.0 4.0
9999 1.0 6 1.0 6.0
[10000 rows x 4 columns]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.