我有一个在重复值上迭代的问题.问题是,分组在这里不是一个选项,因为我应该分析的列是一个字符串,这将是简单的模棱两可.

让我举一个例子:

code lenght value
111ab 'len1' '800 mm'
111ab 'len2' '31,0 in'
222cd 'len1' '1.500 mm'
222cd 'len2' '59,0 in

我之所以要这样做,是因为我想在一个代码上比较这些值.考虑到length列是一个字符串,我想以某种方式创建一个额外的二进制列,当为len1写入‘800 mm’,为len2写入‘31.0in’时,该列的值为0.解析字符串并重新计算值在这里不是一个选项,因为mm或in的一些值被认为是以某种方式四舍五入或假定的.这意味着我想判断相同代码的800 mm是否有31英寸,1500 mm是否有59英寸.

长话短说:我想判断800 mm是不是每个代码都是31英寸.只是作为一个例子.

我怎样才能正确地做到这一点呢?

先谢谢你

推荐答案

考虑到您的限制,您似乎想要匹配一对精确的值.

那么使用set个手术呢?

df['flag'] = (df.groupby('code')['value']
                .transform(lambda x: 0 if set(x) == set(['800 mm', '31,0 in'])
                                     else np.nan)
             )

或者,用一本词典:

mapper = {frozenset(['800 mm', '31,0 in']): 0}

df['flag'] = (df.groupby('code')['value']
                .transform(lambda x: mapper.get(frozenset(x)))
             )

输出:

    code lenght     value  flag
0  111ab   len1    800 mm   0.0
1  111ab   len2   31,0 in   0.0
2  222cd   len1  1.500 mm   NaN
3  222cd   len2   59,0 in   NaN

Python-3.x相关问答推荐

如何将参数/值从测试方法传递给pytest的fixture函数?

如何将项目添加到Python中具有固定大小的列表列表中

如何在 python 中将带有时区信息的时间戳转换为 utc 时间

CSV-DAT 转换时将引号添加到数据中

Django在POST到外部URL时如何进行CSRF保护? 更新

Pandas教程:如何更新行内数值的位置

列出相同索引的Pandas

正则表达式来识别用 Python 写成单词的数字?

python 3:如何判断一个对象是否是一个函数?

TypeError:JSON 对象必须是 str,而不是 'dict'

创建一个可旋转的 3D 地球

Python:如何判断一个项目是否被添加到一个集合中,没有 2x(hash,lookup)

Python 3.10 模式匹配 (PEP 634) - 字符串中的通配符

如何判断一个字符串是否包含有效的 Python 代码

如何通过命令行将数组传递给python

如何配置 Atom 以运行 Python3 脚本?

如何模拟 open(...).write() 而不会出现没有这样的文件或目录错误?

如何在 jupyter notebook 5 中逐行分析 python 3.5 代码

python setup.py egg_info mysqlclient

警告:请使用 tensorflow/models 中的官方/mnist/dataset.py 等替代方案