我有一个这样的数据框:

d = {'col1': ["url/a/b/c/d", "url/b/c/d", "url/j/k", "url/t/y", 'url/r/a/y'],
     'id':   [1, 2, 3, 4, 5]}
df = pd.DataFrame(data=d)

我想在原始数据帧的基础上创建另一个数据帧,其中我有only the part of the strings that repeat.

我的 idea 是对每个/进行拆分,然后将数据帧的第一行与数据帧的其余行(因此对所有行都是一行)进行比较,以判断是否相等.因此,我在这个问题上的初始示例的结果将是:

result = {'col1': [["a", "b", "c", "d"], ["b", "c", "d"], [""], ["y"], ["a", "y"]],
          'id':   [1, 2, 3, 4, 5]}
df_result = pd.DataFrame(data=result)

此外,我不可能没有错误地构建这个函数……有什么主意吗?

谢谢!

推荐答案

您可以提取所有需要的部分(可能有几种方法),然后只保留重复的值,reindex以添加缺少的空列表:

df['col1'] = (df['col1']
 .str.extractall('/([^/]+)')[0]
 .loc[lambda x: x.duplicated(keep=False)]
 .groupby(level=0).agg(list)
 .reindex(df.index, fill_value=[])
 )

输出:

           col1  id
0  [a, b, c, d]   1
1     [b, c, d]   2
2            []   3
3           [y]   4
4        [a, y]   5

Python-3.x相关问答推荐

根据其他数据框架的列顺序从数据框架中进行 Select

在Python中从列创建新行

如何将python点击参数设置为与选项回调不同的参数的别名?

「Python Pandas」多级索引列和行匹配,如果列和行名称相似,则排除这些单元格中的值添加

Pytorch:图像标签

python tkInter 浏览文件夹按钮

在气流中运行 DAG 时出现处理信号:ttou消息

pythondecorator中的变量范围

如何确定一个类的元类?

为什么包含类的名称不被识别为返回值函数注释?

Python3四舍五入到最接近的偶数

ValueError:预期的 2D 数组,得到 1D 数组:

用于 Django 应用程序的 Cython:它会工作吗?

用 numpy nan 查找列表的最大值

Python:&= 运算符

变量类型注解NameError不一致

每次启动 Google Colab 时都必须安装所需的软件包吗?

在 Alembic 迁移期间更新列内容

使用 python 3.0 的 Numpy

如何判断列表中的所有项目是否都是字符串