是否可以使用熊猫通过给定的表提取员工的层次结构?
例如,我们有此表
<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']
感谢您的帮助。
答案 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'}]