gpt4 book ai didi

python - 针对 Pandas 数据框运行逻辑表达式

转载 作者:行者123 更新时间:2023-11-28 18:35:41 26 4
gpt4 key购买 nike

我正在尝试通过将条件应用于列(以逻辑表达式的形式)来从 pandas 数据框中选择行。

示例数据框如下所示:

    id             userid                code
0 645382311 12324234234
1 645382311 -2434234242
2 645382312 32536365654
3 645382312 12324234234

...

例如,我希望通过对“代码”列应用逻辑表达式来期待下一个结果:

    case 1: (12324234234 OR -2434234242) AND NOT 32536365654
case 2: (12324234234 AND -2434234242) OR NOT 32536365654
must give a result for both cases:
userid: 645382311

上面的逻辑说:对于案例 1 - 只给我那些至少具有值之一(12324234234 或 -2434234242)并且在整个数据框中没有 32536365654 的用户标识。对于案例 2 - 我只需要那些在数据框中具有两个代码(12324234234 和 -2434234242)或任何代码但不是 32536365654 的用户标识。

下面的语句返回空的DataFrame:

    flt = df[(df.code == 12324234234) & (df.code == -2434234242)]
print("flt: ", flt)

结果(有意义):

    flt:  Empty DataFrame

对于处理此类情况的任何提示,我们将不胜感激。

最佳答案

作为一种简单的方法,我会将您的示例表转换为 bool 存在矩阵,然后您可以执行所需的逻辑:

import pandas
sample = pandas.DataFrame([[645382311, 12324234234], [645382311, -2434234242], [645382312, 32536365654], [645382312, 12324234234]], columns=['userid', 'code'])
# Add a column of True values
sample['value'] = True
# Pivot to boolean presence matrix and remove MultiIndex
presence = sample.pivot(index='userid', columns='code').fillna(False)['value']
# Perform desired boolean tests
case1 = (presence[12324234234] | presence[-2434234242]) & ~(presence[32536365654])
case2 = (presence[12324234234] & presence[-2434234242]) | ~(presence[32536365654])

case 变量将包含每个用户 ID 的 bool 测试结果。

关于python - 针对 Pandas 数据框运行逻辑表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32646515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com