根据其他列的字符串长度得出新的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
答案 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
或者您也可以replace
与NaNs
和count
一起返回非_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