我有一个数据框:
df = pd.DataFrame({
'a': [1, 2, 0, 3],
'b': [1, 2, 0, 0],
'c': [5, 2, 0, 3],
'd': [0, 3, 7, 1]
})
我现在想创建另一个列n
,它统计列['a', 'b', 'c', 'd']
的值是> 0
。你知道吗
我们需要亲手做:
df['n'] = [3, 2, 3, 3]
我不需要说这对于较大的帧是不好的。我知道我们可以选择感兴趣的行。你知道吗
不幸的是,我无法将提供的bool
值转换为0
和1
并求和。你知道吗
df['n'] = df. a > 0 + df.b > 0 + df.c > 0 + df.d > 0
投掷
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
如何纠正?
您可以执行列表理解,在列上循环,然后对该列使用布尔条件,删除不符合条件的值并调用计数:
这将产生列:
在这个阶段,将行标记为列名可能是有意义的,这样
n
才有意义。你知道吗编辑
在去吃午饭的路上,我意识到有一个更简单的方法,就是调用^{} :
相关问题 更多 >
编程相关推荐