gpt4 book ai didi

python-3.x - 基于逗号分割并在 Python 中创建新的数据框

转载 作者:行者123 更新时间:2023-12-03 21:06:07 26 4
gpt4 key购买 nike

假设我有以下数据框。
df

Nodes       Weight
A,B 10
A,C,F 8
B,F,D 6
B,E 4
我想根据逗号分割并保持它们的重量。例如, Nodes (A,C,F) A 与 C 有联系,C 与 F 有联系。所以,我想看 A >>C , 和 C>>F .不用看 A>>F .并且它们的权重应为 8,如下所示。
我正在寻找的最终数据框如下所示。
Node_1    Node_2     Weight
A B 10
A C 8
C F 8
B F 6
F D 6
B E 4
创建此数据框的目标是从中创建网络图。
有类似的解决方案,但我无法得到我想要的结果。
我尝试了以下内容: df = (df['Nodes'].str.split(',') .groupby(df['Weight'])任何人都可以帮忙吗?

最佳答案

这是执行此操作的一种方法:

# From https://docs.python.org/3/library/itertools.html#itertools-recipes
from itertools import tee
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return zip(a, b)

df['Node_pairs'] = df['Nodes'].str.split(',').apply(lambda x: list(pairwise(x)))
df = df.explode('Node_pairs')
df['Node1'] = df['Node_pairs'].str[0]
df['Node2'] = df['Node_pairs'].str[1]
df
输出:
   Nodes  Weight Node_pairs Node1 Node2
0 A,B 10 (A, B) A B
1 A,C,F 8 (A, C) A C
1 A,C,F 8 (C, F) C F
2 B,F,D 6 (B, F) B F
2 B,F,D 6 (F, D) F D
3 B,E 4 (B, E) B E
细节:
  • 使用 itertools 文档中的成对配方来创建
    '节点对'
  • 分解“Node_pairs”列表中的数据框
  • 使用 .str get 快捷方式分配“Node1”和“Node2”。
  • 关于python-3.x - 基于逗号分割并在 Python 中创建新的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66615007/

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