熊猫认识老板的员工

时间:2019-04-11 15:10:47

标签: pandas recursion

是否可以使用熊猫通过给定的表提取员工的层次结构?

例如,我们有此表

<TextBox Text="{Binding Test, ValidatesOnDataErrors=True}" Margin="10">
    <TextBox.Style>
        <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource MaterialDesignTextBox}">
            <Setter Property="Padding" Value="10 0 0 0" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=(Validation.HasError), RelativeSource={RelativeSource Self}}" Value="True">
                    <Setter Property="Background" Value="Red" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>
bossp列上的

员工b2在empID列上有一个员工a1。并且BossID上的a1拥有雇员e1,

所以预期结果将是+-------+--------+ | empID | bossID | +-------+--------+ | a1 | b2 | | a2 | a1 | | c1 | a2 | | d2 | a2 | | a4 | aa | +-------+--------+

目前,我只能检索1层。

[b2,a1,a2,c1,d2]

但是进一步深入证明是困难的。我尝试将其放在函数上并尝试递归,但未成功。

details = df[('bossID') == "b2"]
details = df['empID'].tolist()
details = list(set(details))
print(details) # ['b2','a1']

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

这看起来像是网络问题,因此我们使用networkx

import networkx as nx

G=nx.from_pandas_edgelist(df, 'empID', 'bossID')
l=list(nx.connected_components(G))
l
Out[184]: [{'a1', 'a2', 'b2', 'c1', 'd2'}, {'a4', 'aa'}]