在pandas数据框中作为某些值的列数

时间:2019-05-09 09:59:43

标签: python pandas lambda multiple-columns

根据其他列的字符串长度得出新的pandas列

我想计算每行中都有一个值的列数,并用该数字创建一个新列。假设我有3列,两列具有某些值,那么该行的新列将具有值2

df = pd.DataFrame({'ID':['1','2','3'], 'J1': ['a','ab',''],'J2':['22','','33']})
print df

输出应为:

  ID  J1  J2 Count_of_cols_have_values 
0  1   a  22  2
1  2  ab      1 
2  3      33  1

1 个答案:

答案 0 :(得分:2)

一种方法可能是检查哪些单元格不等于(DataFrame.ne)与空字符串,然后沿行取和:

df['Count_of_cols_have_values '] = df.set_index('ID').ne('').sum(1).values

  ID  J1  J2   Count_of_cols_have_values 
0  1   a  22                           2
1  2  ab                               1
2  3      33                           1

或者您也可以replaceNaNscount一起返回非_NA值:

df['Count_of_cols_have_values '] = df.set_index('ID').replace('',np.nan).count(1).values

  ID  J1  J2   Count_of_cols_have_values 
0  1   a  22                           2
1  2  ab                               1
2  3      33                           1