Python Dataframe 列问题(消失)

问题描述 投票:0回答:1

从我问的上一个问题来看,我想递归地创建和排序某个父/子层次结构。 在一位成员的大力帮助下,他为我找到了完成这项工作的解决方案。

但是,是的,有一个但是,输入文件是一个 .csv 文件,有 18 列。

以前的解决方案仅使用两列(父列和子列),输出文件仅获取这两列+我们创建的用于表示层次结构的列。

这是上一主题的链接: https://stackoverflow.com/questions/78364917/sort-hierarchic-parent-child-list-in-python

我的目标是简单地添加我的新列(使用之前的答案创建)并保留所有原始数据。

问题是:原始 .csv 文件中的数据没有任何唯一 ID,因此我无法将新旧 Dataframe 合并在一起。

我也尝试过手动添加列,这是代码:

def make_hierarchy(g):
    G = nx.from_pandas_edgelist(g, create_using=nx.DiGraph,
                                source='REF_ARTICLE_PERE', target='REF_ARTICLE_FILS', **edge_attr=True**)
    
    def dfs_with_level(node, level, order, parent_order, max_depth):
        # Here I tried to modify the hierarchy_data squeletton, but no success
        hierarchy_data = [(g.name, node, level, parent_order + f'{order:0{max_depth}d}')]
        children = list(G.successors(node))
        if children:
            for i, child in enumerate(children, start=1):
                hierarchy_data.extend(dfs_with_level(child, level + 1, i, parent_order + f'{order:0{max_depth}d}' + '.', max_depth))
        return hierarchy_data
    
    hierarchy_data = []
    for node in G.nodes:
        if not list(G.predecessors(node)):
            max_depth = len(str(len(G)))
            hierarchy_data.extend(dfs_with_level(node, 1, 1, '', max_depth))
    # Here I tried to add columns in the dataframe, but they told me 4 cols passed, needed 5 somthing like this
    df_hierarchy = pd.DataFrame(hierarchy_data, columns=['REF_PRODUIT', 'REF_ARTICLE_FILS', 'Level', 'sorted_order'])

    # Add underscores to represent hierarchy levels visually (reverse order)
    max_level = df_hierarchy['Level'].max()
    df_hierarchy['Level'] = df_hierarchy['Level'].apply(lambda x: '_' * (x - 1) + str(x))
    
    return df_hierarchy


df = pd.read_csv('input.csv')

out = df.groupby('REF_PRODUIT', group_keys=False).apply(make_hierarchy)

out.to_csv('output.csv', index=False)

我设置了edge_attr=Yes以保留图表中的所有列,但是问题出现在这一步之后。

在检查所有节点时,我想保留实际行的数据,并将其添加到df_hierarchy

在调试器中我看到数据:

G.adj.values
但它是所有行的所有数据,而不仅仅是当前行的数据。 即使我找到了一种方法来获取当前行的数据(将其添加到新的 DF 中),我也不确定是否能够添加它......

我对所有这些数据操作都很陌生,我是一名学生,我们将不胜感激。

python database dataframe csv sorting
1个回答
0
投票

什么是 lia kha Gai 越南 be nhi 今天美好的一天也爱你们 snd 的意思是 acha choro sub baty krty hy ap sy bat kr rahi hu 热水浴缸之间的区别是

© www.soinside.com 2019 - 2024. All rights reserved.