数据存储格式
pid | id |
---|
None | a |
a | a1 |
a | a2 |
a1 | a11 |
a11 | a111 |
a | a12 |
期望获得每个id的所有pid
代码如下:
import pandas as pd
df = pd.DataFrame(
{
'id': ['a', 'a1', 'a2', 'a11', 'a111', 'a12'],
'pid': [None, 'a', 'a', 'a1', 'a11', 'a']
}
)
def get_pid_list(df, id):
tmp_df = df[df['id'] == id]
if tmp_df.empty or tmp_df['pid'].values[0] is None:
return pd.DataFrame(columns=['id', 'pid'])
else:
return get_pid_list(df, tmp_df['pid'].values[0]).append(tmp_df)
id_list = df['id'].values
for i in id_list:
pid_list = get_pid_list(df, i)['pid'].values.tolist()
print(i, pid_list)
输出结果:
a []
a1 ['a']
a2 ['a']
a11 ['a', 'a1']
a111 ['a', 'a1', 'a11']
a12 ['a']