如何根据无/空值附加熊猫数据帧的列?



在一个问题上需要你的帮助。 我有一个数据帧df它有 3 列"对象"数据类型 -opt1opt2opt3

现在我需要创建一个新的列var它将具有以下内容-

  1. 如果opt2opt3为无/空/空,opt1不是无/空/空: 然后df['var'] = df['opt1']
  2. elifopt1opt3为 None/Null/
  3. Empty,opt2为 None/Null/Empty: 然后df['var'] = df['opt1'] + '|' + df['opt3']
  4. elifopt1opt2为无/空/空
  5. opt3为无/空/空: 然后df['var'] = df['opt1'] + '|' + df['opt2']
  6. 否则:df['var'] = df['opt1'] + '|' + df['opt2'] + '|' + df['opt3']

请建议我将上述条件放在Python 3.6中或与我分享任何更好的方法。

我认为需要:

df = pd.DataFrame({'opt1':['',np.nan,'a','a','a',np.nan],
'opt2':[np.nan,'b',np.nan,'b','b',np.nan],
'opt3':['c','Null',np.nan,'c',np.nan,np.nan]})
print (df)
opt1 opt2  opt3
0       NaN     c
1  NaN    b  Null
2    a  NaN   NaN
3    a    b     c
4    a    b   NaN
5  NaN  NaN   NaN
#replace strings Null and empty strins to NaN 
df1 = df.mask(df.isin(['Null','']))
#join values per rows with filter out NaNs
df['var'] = df1.apply(lambda x: '|'.join(x.dropna()), 1)
print (df)
opt1 opt2  opt3    var
0       NaN     c      c
1  NaN    b  Null      b
2    a  NaN   NaN      a
3    a    b     c  a|b|c
4    a    b   NaN    a|b
5  NaN  NaN   NaN       

相关内容

  • 没有找到相关文章

最新更新