计算大型数据框中的正列数
Count number of positive columns from large dataframe
我有一个包含 500 列的大型 DataFrame,其中 300 列 col1, col2, ..col300
如下所示:
idx col1 col2
a -1 4
b 2 1
c -1 -1
我想获取 300 列的以下内容。其他200列是我不感兴趣的变量:
idx col1 col2 numPos
a -1 4 1
b 2 1 2
c -1 -1 0
我想为每一行获取正值的数量。我不想使用 apply 方法,因为 DataFrame 中大约有 200 万行。有没有 pythonic 的方法来做到这一点?
您可以 select 列 + gt
(创建一个布尔数据帧,如果值为正则它为真)+ sum
轴:
df['numPos'] = df[['col1','col2']].gt(0).sum(axis=1)
也许你也可以过滤它们,比如:
df['numPos'] = df.filter(like='col').gt(0).sum(axis=1)
输出:
idx col1 col2 numPos
0 a -1 4 1
1 b 2 1 2
2 c -1 -1 0
最好的办法是排除对象列,查询df中大于0的是什么,然后沿行轴求和
df['numPos']= df.select_dtypes(exclude='object').gt(0).sum(1)
idx col1 col2 status
0 a -1 4 2
1 b 2 1 3
2 c -1 -1 0
df['numPos'] = (df[cols] > 0).sum(axis=1)
其中 cols 是列名列表。如果 300 列是连续的,那么可以使用 df.iloc[:,start_offset:start_offset+300]
代替 df[cols]
,其中 start_offset
是第一列的索引。
我有一个包含 500 列的大型 DataFrame,其中 300 列 col1, col2, ..col300
如下所示:
idx col1 col2
a -1 4
b 2 1
c -1 -1
我想获取 300 列的以下内容。其他200列是我不感兴趣的变量:
idx col1 col2 numPos
a -1 4 1
b 2 1 2
c -1 -1 0
我想为每一行获取正值的数量。我不想使用 apply 方法,因为 DataFrame 中大约有 200 万行。有没有 pythonic 的方法来做到这一点?
您可以 select 列 + gt
(创建一个布尔数据帧,如果值为正则它为真)+ sum
轴:
df['numPos'] = df[['col1','col2']].gt(0).sum(axis=1)
也许你也可以过滤它们,比如:
df['numPos'] = df.filter(like='col').gt(0).sum(axis=1)
输出:
idx col1 col2 numPos
0 a -1 4 1
1 b 2 1 2
2 c -1 -1 0
最好的办法是排除对象列,查询df中大于0的是什么,然后沿行轴求和
df['numPos']= df.select_dtypes(exclude='object').gt(0).sum(1)
idx col1 col2 status
0 a -1 4 2
1 b 2 1 3
2 c -1 -1 0
df['numPos'] = (df[cols] > 0).sum(axis=1)
其中 cols 是列名列表。如果 300 列是连续的,那么可以使用 df.iloc[:,start_offset:start_offset+300]
代替 df[cols]
,其中 start_offset
是第一列的索引。