gpt4 book ai didi

python - 如何根据 Pandas 中的依赖值更新数据框?

转载 作者:行者123 更新时间:2023-12-03 21:45:55 25 4
gpt4 key购买 nike

我必须根据依赖值更新数据帧。如何才能做到这一点?
例如,输入数据帧 df :

id      dependency
10
20 30
30 40
40
50 10
60 20
我们这里有: 20 -> 3030 -> 40 .所以最终的结果将是 20 -> 4030 -> 40 .
同理, 60 -> 20 -> 30 -> 40所以最终结果将是 60 -> 40 .
最后结果:
id      dependency   final_dependency
10
20 30 40
30 40 40
40
50 10 10
60 20 40

最佳答案

您可以使用 networkx 去做这个。首先,创建一个具有依赖关系的节点的图:

df_edges = df.dropna(subset=['dependency'])
G = nx.from_pandas_edgelist(df_edges, create_using=nx.DiGraph, source='dependency', target='id')
现在,我们可以找到每个节点的根祖先并将其添加为一个新列:
def find_root(G, node):
ancestors = list(nx.ancestors(G, node))
if len(ancestors) > 0:
root = find_root(G, ancestors[0])
else:
root = node
return root

df['final_dependency'] = df['id'].apply(lambda x: find_root(G, x))
df['final_dependency'] = np.where(df['final_dependency'] == df['id'], np.nan, df['final_dependency'])
结果数据框:
   id  dependency  final_dependency
0 10 NaN NaN
1 20 30.0 40.0
2 30 40.0 40.0
3 40 NaN NaN
4 50 10.0 10.0
5 60 20.0 40.0

关于python - 如何根据 Pandas 中的依赖值更新数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64220021/

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