带有补零的熊猫标志行

舞会2

给定以下数据框:

import pandas as pd
df=pd.DataFrame({'A':[0,4,4,4],
                 'B':[0,4,4,0],
                 'C':[0,4,4,4],
                 'D':[4,0,0,4],
                 'E':[4,0,0,0],
                 'Name':['a','a','b','c']})
df
    A   B   C   D   E   Name
0   0   0   0   4   4   a
1   4   4   4   0   0   a
2   4   4   4   0   0   b
3   4   0   4   4   0   c

我想添加一个名为“ Match_Flag”的新字段,如果它们具有互补的零模式(如行0、1和2)并且具有相同的名称(仅适用于行0和1),则该行将标记行的唯一组合。它使用匹配的行的名称。

预期结果如下:

    A   B   C   D   E   Name  Match_Flag
0   0   0   0   4   4   a     a
1   4   4   4   0   0   a     a
2   4   4   4   0   0   b     NaN
3   4   0   4   4   0   c     NaN

注意:模式可能会有所不同,但仍应是互补的。

提前致谢!

更新

对困惑感到抱歉。这里有一些澄清:

第0行和第1行之所以是“互补的”,是因为它们在列中具有相反的零模式。0,0,0,4,4和4,4,4,0,0 数字4是任意的;它可以很容易地是0,0,0,4,2和65,770,23,0,0。因此,如果2个这样的行确实是互补的并且它们具有相同的名称,我希望在“ Match_Flag”列下将它们标记为相同的名称。

海盗

如果点乘积为零,并且元素明智的总和不为零,则可以识别出一个恭维。

def complements(df):
    v = df.drop('Name', axis=1).values
    n = v.shape[0]
    row, col = np.triu_indices(n, 1)

    # ensure two rows are complete
    # their sum contains no zeros
    c = ((v[row] + v[col]) != 0).all(1)
    complete = set(row[c]).union(col[c])

    # ensure two rows do not overlap
    # their product is zero everywhere
    o = (v[row] * v[col] == 0).all(1)
    non_overlap = set(row[o]).union(col[o])

    # we are a compliment iff we do
    # not overlap and we are complete
    complement = list(non_overlap.intersection(complete))

    # return slice
    return df.Name.iloc[complement]

然后groupby('Name')apply我们的职能

df['Match_Flag'] = df.groupby('Name', group_keys=False).apply(complements)

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

缺少日期*由*组定义的大熊猫补零

来自分类Dev

__未使用的标志行为/用法(带有Objective-C的GCC)

来自分类Dev

2s补零

来自分类Dev

带有多个标志的脚本

来自分类Dev

如何正确读取带有日期的csv并在熊猫中省略前导零?

来自分类Dev

捕获在定长字符串中补零的变长组

来自分类Dev

Regex的[m]标志必须带有[g]标志吗?

来自分类Dev

带有标志的301重定向

来自分类Dev

带有-L标志的du命令的行为

来自分类Dev

丝带/侧面标志带有CSS

来自分类Dev

带有部分J标志的拉链

来自分类Dev

带有CSS标志形状背景的链接

来自分类Dev

带有 Coffeescript 的节点 `--inspect` 标志

来自分类Dev

Python Pandas group by 带有类别标志

来自分类Dev

装配中带有携带标志,辅助标志和溢出标志

来自分类Dev

Verilog,测试零标志

来自分类Dev

带有前导零的toString(16)

来自分类Dev

使用带有Signonce标志的Inno Setup签名文件

来自分类Dev

每个架构标志均带有CocoaPods podspec

来自分类Dev

带有操作系统版本的Cabal“ os”标志

来自分类Dev

使用带有交通标志的分类器OpenCV级联

来自分类Dev

带有--no-ff标志的git pull请求

来自分类Dev

在对象中查找带有true标志的属性

来自分类Dev

带有jQuery标志的国家选择器

来自分类Dev

如何使用带有标志--selector的kubectl命令?

来自分类Dev

如何使用带有ssh -t标志的gcloud computing ssh?

来自分类Dev

带有单行标志的regex命令行

来自分类Dev

将带有标志的Julia内核添加到JupyterLab

来自分类Dev

使用带有Signonce标志的Inno Setup签名文件