如何遍历一列列表并从另一列中删除另一个列表中同一索引处的元素?

2024-01-12

我有一个数据框,其中每行非列表后面跟着一行包含列值中的列表。

Name Number Country Fruit Fruit Date Sport Sport Date Color Color Date
Jack 23 Canada Banana 09/01/2022 Basketball 09/01/2022 Blue 09/01/2022
Jack 23 Canada ['Banana', 'Apple', 'Apple'] ['09/01/2022', '09/02/2022', '09/02/2022'] ['Basketball', 'Soccer', 'Hockey'] ['09/01/2022', '09/02/2022', '09/03/2022'] ['Blue', 'Blue', 'Red'] ['09/01/2022', '09/01/2022', '09/02/2022']
John 24 USA Banana 09/01/2022 Basketball 09/01/2022 Blue 09/01/2022
John 24 USA ['Banana', 'Apple', 'Apple'] ['09/01/2022', '09/02/2022', '09/02/2022'] ['Basketball', 'Soccer', 'Hockey'] ['09/01/2022', '09/02/2022', '09/03/2022'] ['Blue', 'Blue', 'Red'] ['09/01/2022', '09/01/2022', '09/02/2022']

我想删除每个列表中的重复列表值:Fruit、Sport、Color 及其相应的 Date 索引值。我还需要没有列表的行保持不变。我只希望带有列表的行受到此更改的影响。第一行只是每个列表中的第一次出现。

示例输出:

Name Number Country Fruit Fruit Date Sport Sport Date Color Color Date
Jack 23 Canada Banana 09/01/2022 Basketball 09/01/2022 Blue 09/01/2022
Jack 23 Canada ['Banana', 'Apple'] ['09/01/2022', '09/02/2022'] ['Basketball', 'Soccer', 'Hockey'] ['09/01/2022', '09/02/2022', '09/03/2022'] ['Blue', 'Red'] ['09/01/2022', '09/02/2022']
John 24 USA Banana 09/01/2022 Basketball 09/01/2022 Blue 09/01/2022
John 24 USA ['Banana', 'Apple'] ['09/01/2022', '09/02/2022'] ['Basketball', 'Soccer', 'Hockey'] ['09/01/2022', '09/02/2022', '09/03/2022'] ['Blue', 'Red'] ['09/01/2022', '09/02/2022']

我认为这里循环是不可避免的:

for col in df.columns:
    df[col] = [
        list(dict.fromkeys(v)) # to preserve the order of the values
        if isinstance(v, list) else v for v in df[col]
    ]

或者,您可以使用map https://pandas.pydata.org/docs/dev/reference/api/pandas.DataFrame.map.html那已经是2.1.0中添加 https://pandas.pydata.org/docs/dev/whatsnew/v2.1.0.html#new-dataframe-map-method-and-support-for-extensionarrays (从前 applymap https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.applymap.html):

df = df.map(lambda v: list(dict.fromkeys(v)) if isinstance(v, list) else v)

时间:

# loop : 907 µs ± 31.4 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
# .map : 630 µs ± 40.4 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)

Output :

Name Number Country Fruit Fruit Date Sport Sport Date Color Color Date
0 Jack 23 Canada Banana 09/01/2022 Basketball 09/01/2022 Blue 09/01/2022
1 Jack 23 Canada ['Banana', 'Apple'] ['09/01/2022', '09/02/2022'] ['Basketball', 'Soccer', 'Hockey'] ['09/01/2022', '09/02/2022', '09/03/2022'] ['Blue', 'Red'] ['09/01/2022', '09/02/2022']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何遍历一列列表并从另一列中删除另一个列表中同一索引处的元素? 的相关文章

随机推荐

  • 如何在 xampp windows [php 7.2] 中安装/启用 GD?

    我不知道如何为 PHP7 2 安装 php gd 有没有办法在 xampp windows 中安装 启用 GD 扩展 我检查了 php ini 文件php gd2 dll但我找不到那条线 PHP7 2 中似乎缺少 GD 有什么建议么 转到
  • 是否可以使用指向参数数量未知的函数的指针?

    我正在编写一个简单的类来衡量函数在时间方面的性能 用户应该能够发送指向他的函数的指针 函数的参数 调用该函数的时间以及我将调用该函数的时间 返回经过的时间 我的问题是我不知道用户的函数需要多少个参数 我想使用可变参数函数来获取未知数量的参数
  • 运行 tf.estimator.train 100 步时,在张量板上仅看到一个步骤

    我有一个通过我自己的自定义构建的自定义估算器model fn 我想跑train并在张量板上查看每个步骤的数据点 但是 无论步骤数如何 每次调用我都只能看到一个数据点 以下是我构建和训练估算器的方法 estimator tf estimato
  • 以给定概率获取伪随机项

    我想在用户登录时给他一个奖品 但它需要有一些稀有的奖品 所以我想使用百分比以不同的机会出现奖品 我想显示其中之一 50 flower 30 book 20 mobile 使用他们拥有的百分比 如果有任何方法使用 Node js 或只是 ja
  • 我应该如何在 ECS 上设置 Traefik?

    简而言之 我已经成功跑了Traefik本地及上AWS ECS但现在我想知道应该如何设置某种负载平衡 以使我的两个具有随机 IP 的服务可供公众使用 我当前在 ECS 上的设置 Internet Load balancer on port 4
  • gcloud 未添加用于连接 GKE 集群的访问令牌

    我创建了一个 GKE 集群并使用以下命令连接到它kubectl运行针对我的集群单击 连接 按钮时出现的命令 gcloud container clusters get credentials cluster name zone us cen
  • SpringServletContainerInitializer 无法转换为 javax.servlet.ServletContainerInitializer

    我正在尝试将基于 xml 的 Spring MVC 应用程序移动到基于 Java 配置的应用程序 似乎与 maven 中可用的各种 java servlet 类不匹配 例如 有些提供 addServlet 方法 有些则不提供 这是我的配置类
  • VS 测试在管道中失败,缺少“Microsoft.NET.Test.Sdk”

    由于以下原因 我的构建失败了视觉工作室测试我的构建管道中的步骤失败 我有一个简单的 NET Core v2 1 类库和关联的 MS 测试库 我的管道有两个步骤 NET Core 构建步骤 以及 Visual Studio 测试步骤 这两个项
  • 将字符串移动到向量中

    有没有办法move将 std string 的内容转换为 std vector 我认为现在语言中有右值引用 这个操作有时会非常有用 It is 理论上可以从一种对象类型移动到另一种对象类型 然而 这些对象类型的设计必须允许这样做 vecto
  • 调整闪亮控件的标签位置

    令我惊讶的是 StackOverflow 上以前没有出现过这个问题 但无论如何 问题是 目前 标签文本 年龄范围 在此处指定 sliderInput inputId age Age Range min 32 max 99 value c 3
  • 为什么camel kafka Producer很慢?

    我使用 apache camel kafka 作为生成消息的客户端 我观察到 kafka 生产者需要 1 毫秒才能推送一条消息 如果我使用骆驼聚合将消息合并到批处理中 那么推送一条消息需要 100 毫秒 安装简述 3 kafka 集群 16
  • 仅在选定的列上使用 sklearn StandardScaler [重复]

    这个问题在这里已经有答案了 我有一个 numpy 数组 X 有 3 列 如下所示 array 3791 2629 0 1198760 113989 0 4120665 0 1 前 2 列是连续值 最后一列是二进制 0 1 我想仅将 Stan
  • 最快的 iPhone Blit 例程?

    我有一个UIView我需要将其位块传送到的子类UIImage 有多种方法可以给这只猫剥皮 具体取决于您喜欢使用哪个系列的 API 我对最快的感兴趣 可不可能是UIImage s drawAtPoint or drawRect 或者也许是基于
  • 如何在 JavaScript 中正确柯里化函数?

    我写了一个简单的curryJavaScript 中的函数在大多数情况下都能正常工作 const curry f a gt a length lt f length b gt curry f a b f a const add curry a
  • C - 将可变数量的命令行参数传递到具有可变数量参数的方法中

    我正在编写一个 C 程序 它将采用可变数量的命令行参数 然后 我需要获取这些参数并将它们传递到一个函数中 该函数将可变数量的文件名作为单独的参数 使用 va arg 获取函数内的参数 原型为 void FindFile char filen
  • C++:响应 Windows 注销的清理操作

    我想捕获 Windows 注销事件 以便可以进行一些清理 我的WindowProc看起来像这样 switch uMsg case WM ENDSESSION case WM DESTROY PostQuitMessage 0 return
  • ggplot:从年份子集中添加新行

    我有大约 90 年的每日数据 我想绘制长期平均值 以及我的调查期间 2014 2018 每年的单独线条 数据如下 gt head dischg date ddmm year cfs daymo 1 1 Jan 27 01 Jan 1927
  • .bash_profile 和终端

    my bash profile looks this way 当我打开终端时 我看到这三行 bash 导出 Workbooks app Contents SharedSupport path bin not a valid identifi
  • JavaFX 2 BorderPane 使用完整空间

    我只是面临一个我自己无法解决的小问题 我尝试在 BorderPane 中放置一个包含 TextField 和 HTML 编辑器的 vBox 但是 未使用全部空间 另一个问题是 如果我缩小窗口 html 编辑器 与我的左侧选项窗口重叠 pri
  • 如何遍历一列列表并从另一列中删除另一个列表中同一索引处的元素?

    我有一个数据框 其中每行非列表后面跟着一行包含列值中的列表 Name Number Country Fruit Fruit Date Sport Sport Date Color Color Date Jack 23 Canada Bana