繁体   English   中英

如果有值,则从另一列中获取新列,如果没有,则从另一列中获取值 Python Pandas

[英]New column from another column if value, if not, take value from another column Python Pandas

对于 pandas 中的大数据集最有效:

如果有值,我想添加一个新列ZX中获取值,如果没有,我想从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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM