我将如何迭代Pandas系列并将其与单个浮点进行比较?

2024-04-25 17:32:35 发布

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

我想知道是否有可能检查两个表之间的计算结果是否可以与比较运算符一起使用。你知道吗

假设我有两个数据帧。你知道吗

DF

| user_id | col1| col2| col3| col4| check |
|---------|-----|-----|-----|-----|-------|
| 100     |  1  |  2  |  1  |  0  |   5   |
| 200     |  2  |  4  |  0  |  2  |   5   |

DF2

| user_id | col1| col2| col3| col4| check |
| 300     |  3  |  6  |  2  |  0  |   5   |
| 400     |  4  |  8  |  0  |  4  |   5   |

对于df中的每个用户,我遍历df2中的每个用户。然后我想把它们的col1值相加,看看它们是否大于数字5。如果是,则应使用“大于5”返回。如果不,应返回“小于5”。你知道吗

这就是我想象的语法,但它不起作用。你知道吗

for a in df.user_id:
    for b in df2.user_id:
        if df.col1 + df.col2 > df.check:
            print('Greater than 5')
        else:
            print('Less than 5')

我得到一个值错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

这背后的逻辑是什么?将迭代项与单个值进行比较是如何工作的?你知道吗

另外,除了作为静态值与iterable系列之外,使用测向检查列值与for循环中的int(5)的比较?这有什么影响?你知道吗

谢谢!你知道吗


Tags: 用户iniddfforcheckcol2col3
2条回答

你也许应该换一种关系型的方法。我的方法是:

df_result = (pd.concat([df, df2], axis=0)
             .assign(greater_than_check = lambda d: (d.col1 + d.col2)>d.check))

col1+col2大于check的用户:

df_result.loc[lambda d: d.greater_than_check, "user_id"]
for a in df:
    for b in df2:
        if df.loc[a,"col1"] + df2.loc[b,"col1"] > df.loc[a,"check"]:
            print('Greater than 5')
        else:
            print('Less than 5')

之前,您正在将一整列与另一整列进行添加和比较。相反,使用.loc查看一列的行索引。你知道吗

相关问题 更多 >