python - 如何为具有 60 列的数据框编写具有多个条件的“for 循环”?
问题描述
对于图像中的 df,我如何找到每列的实例数(例如:151),其中该列的值 <= 0 并且“WS”列的值> 0(“WS”> 0 将与所有其他列 - 151、154、152 为常数“AND”。所以基本上 151 <= 0 和 WS > 0、152 <= 0 和 WS > 0.. 等等。如何为此编写一个for循环?输出需要存储在另一个 df 中,看起来像(只是随机数)-
151 - 2368 152 - 3098 154 - 2301
解决方案
如果要遍历数据框的行,可以使用以下itterrows()
方法:
cols = df.columns[:-1] ##[151, 154, 152]
out = pd.Series({c: 0 for c in cols})
for c in cols:
for index, row in df.iterrows():
if row[c] <= 0 and row['WS'] > 0:
out[c] = out[c] + 1
但是,有一种更好的方法可以做到这一点(无需遍历行),方法是在根据以下条件过滤数据帧时检查数据帧的长度:
cols = df.columns[:-1] ##[151, 154, 152]
out = pd.Series()
for c in cols:
out[c] = len(df[(df[c] <= 0)&(df['WS'] > 0)])
这里cf[c] <= 0
给我们一列二进制值,指示列c
小于 0 的行。同样df['WS'] > 0
,二进制列指示哪些行对 WS 具有正值。(df[c] <= 0)&(df['WS'] > 0)
给我们一列,指示两者都为真的行,并通过二进制列切片数据帧,就像df[binary_column]
给我们一个仅包含该二进制列为真的行的数据帧。
推荐阅读
- ios - 如何在 SwiftUI 中从一个视图转换到另一个视图
- angular - 如何使用单独的路由模块从组件路由到同级路由模块
- php - 自定义 PHP 和 CSS 不能用作 Wordpress 插件 - 光标
- ios - 当结构不符合 ExpressibleByArrayLiteral 时,为什么可以从数组字面量创建对象?
- python - 在 Jupyter Notebook 中欺骗 argparse
- python - Pandas - ValueError:列标签不是唯一的
- javascript - Partial View 的 JavaScript 只改变第一个 Partial
- javascript - P5 仅绘制一次某些项目,但保持它们连续渲染
- assembly - x86_64 汇编:中断标志和 TPR 寄存器的影响
- flutter - Provider 不使用 Flutter 中的 Provider 包通知监听器