首页 > 解决方案 > Python - 检查几列并比较字符串

问题描述

假设我在下面有一个数据框。

       a        b        c
0    one      two    three
1  three      one      two

我想让第 0 行和第 1 行被视为同一个列表?或其他东西,因为即使顺序不同,两行都包含“一”、“二”、“三”。

我是否应该创建一个新列来存储 a、b、c 列中的所有字符串,例如,

       a        b        c                d
0    one      two    three    one two three
1  three      one      two    three one two

然后比较 d 列的第 0 行和第 1 行?

在此之后,我想做 .groupby('d') ,结果,'一二三'和'三一二'不能分开。

我想不出解决这个问题的方法,需要帮助。

标签: pythondataframe

解决方案


在加入之前对每行中的单元格进行排序以创建分组字符串。

使用 apply with axis=1 来逐行应用这个函数。

df['d'] = df.apply(lambda x: ' '.join(x.sort_values()), axis=1)

# outputs:

       a    b      c              d
0    one  two  three  one three two
1  three  one    two  one three two

grouping byd会将两行放在同一个组中。例子:

df.groupby('d').agg('count')

               a  b  c
d
one three two  2  2  2

推荐阅读