python - python pandas:lambda或其他计算NaN值/ len(value)<1沿行的方法
问题描述
根据其他列中字符串的长度派生一个新的 pandas 列
我想计算每行中具有值的列数并使用该数字创建一个新列。假设如果我有 6 列,并且两列以具有某个值的开头,那么该行的新列将具有值 2。
df = pd.DataFrame({'ID':['1','2','3'],'ID2':['11','12','13'], 'J1': ['a','ab',''],'J2':['22','','33'],'a1': ['a11','','ab1'],'a2':['22','1','33']})
print df
输出应该是这样的:
ID J1 J2 a1 a2 Count_J_cols_have_values count_a_cols_have_values
0 1 a 22 a11 22 2 2
1 2 ab 1 1 1
2 3 33 ab1 33 1 2
输出应该是这样的:
ID J1 J2 a1 a2 Count_J_cols_have_values count_a_cols_have_values
0 1 a 22 a11 22 2 2
1 2 ab 1 1 1
2 3 33 ab1 33 1 2
解决方案
DataFrame.filter
与Series.ne
和作为一起使用Series.sum
:
df['Count_J_cols_have_values'] = df.filter(regex='^J').ne('').sum(1)
df['count_a_cols_have_values'] = df.filter(regex='^a').ne('').sum(1)
print(df)
ID ID2 J1 J2 a1 a2 Count_J_cols_have_values count_a_cols_have_values
0 1 11 a 22 a11 22 2 2
1 2 12 ab 1 1 1
2 3 13 33 ab1 33 1 2
推荐阅读
- amazon-web-services - 新创建的 AWS 成员账户缺少 IAM 角色
- arrays - 如何在通过switch case选择的数组中添加元素
- vue.js - 如何使用 vuejs 为 div 添加颜色
- python - 多重继承和super()
- vue.js - $vuetify.goTo 在 v-dialog 全屏模式下不起作用
- rasa - 翻译 NLU 模型中 RASA 实体提取的问题
- gulp - 已解决 - gulp : 为网站构建几个 dist,每个都有自己的自定义 js
- chart.js - Chart.js如何改变颜色的宽度
- bash - 如何将vim用作less -R?
- nativescript - tns 预览对意外令牌不起作用