Python:遍历DataFram的条件语句

2024-09-30 01:21:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含50列和2000多行数据的数据帧。基本上,我想逐行检查每一列的值是否在小于-10之前变为大于10。如果是这样,则迭代计数器并转到下一列。在

for row in data2.transpose().iterrows():
    if row > 10:
        countTP = countTP + 1
        break
    if row < -10:
        countSL = countSL + 1
        break

print countTP, countSL

Out: 1 0

至少有一半的列应该迭代计数器(我相信答案应该是3515)谢谢任何帮助!在


Tags: 数据答案inforif计数器outrow
1条回答
网友
1楼 · 发布于 2024-09-30 01:21:15

你好像很困惑你想做什么。在

  1. .iterrows()给你一个元组。所以你的row实际上是(column_name, Series)形式的tuple元组总是大于整数。例如,读this one。所以row > 10总是True,而{}总是{}。在
  2. 一旦进入循环,row > 10计算True,它break立即完成。没有更多的循环和检查(也许您在想continue,但是行比较并没有如预期的那样工作。)这就是为什么您总是得到countTP=1和{}。在

您真正需要的是类似以下嵌套循环的内容。(有人可能会说,这是缓慢的和矢量化是首选。但这是为了清晰,对于2000+50的数据帧,这不是太慢。)

countTP = countSL = 0

for col_name in data2:
    for row in data2[col_name]:
        if row > 10:
            countTP = countTP + 1
            break #Here we want to 'break' out of the inner loop but continue the outer loop
        if row < -10:
            countSL = countSL + 1
            break

print countTP, countSL

相关问题 更多 >

    热门问题