gpt4 book ai didi

python - 如果共享单元格值则合并行

转载 作者:行者123 更新时间:2023-12-01 09:11:46 25 4
gpt4 key购买 nike

我正在创建一个 csv,它将作为任何给定名称可接受的昵称的引用。然后,我输入一个名称,浏览每一行以查看该名称是否存在,然后返回该行中的所有其他单元格,即昵称。输入名称不必位于第一列中即可返回结果。但是,我从几个不同的来源创建了该列表,现在我有重复的列表。如果任何单元格匹配,是否有办法合并每一行?

Excel/VBA/Python 中的解决方案会很棒。

csv 中的示例行:

a       b       c       d
steven steve
abigail abby abby gail
stephen steve steph
abraham ab abe

期望的输出:

a       b       c       d
steven steve stephen steph
abigail abby abby gail
abraham ab abe

最佳答案

我提出的解决方案乍一看似乎很不寻常,但它确实有效。

您可以构建一个名称图,其中两个名称是相互可接受的昵称,则将它们连接起来。该图的连接组件是所有相互可接受的昵称的组。

首先导入networkx(网络操作模块)和其他支持工具:

import networkx as nx
from itertools import combinations, chain

以下是 CSV 文件中的列表:

names = [['steven', 'steve'], ['abigail', 'abby', 'abby', 'gail'],
['stephen', 'steve', 'steph'], ['abraham', 'ab', 'abe']]

通过将每个子列表中的每个名称与同一子列表中的每个其他名称连接来创建边列表:

edges = chain.from_iterable(combinations(set(n), 2) for n in names)

从边列表构造一个图:

G = nx.Graph(edges)

识别连接的组件:

[list(n) for n in nx.connected_components(G)]
#[['stephen', 'steph', 'steven', 'steve'],
# ['gail', 'abigail', 'abby'],
# ['abe', 'ab', 'abraham']]

关于python - 如果共享单元格值则合并行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51602796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com