Позвольте мне начать с главной цели, которую я пытаюсь достичь.У меня есть набор чисел, состоящий из 14 цифр в базе данных из двух наборов категорий (Поставить под «Hier») Родитель или потомок, например, 60814703140000: Родитель, если последние 4 цифры содержат число, например, 60814703140100: дочерний. введите описание изображения здесь
Я пытаюсь разработать алгоритм в Pandas Python, который знает, как группировать родителей с последующими детьми, основываясь на том факте, что родитель / ребенок делят первые 10цифры.
Мой мыслительный процесс заключался в следующем: извлечь два вектора из базы данных pandas:
Par=Newdf[Newdf['Hier']=='Parent']
Chi=Newdf[Newdf['Hier']=='Child']
И затем выполнить итерацию по двум сериям, используя вложенный цикл for: Если первые 10 цифр элемента вPar равняется первым 10 цифрам в элементе Chi: затем они принадлежат к одному семейству и добавляют их в мой список таким образом, чтобы он давал список связанного родительского дочернего элемента: [(60814703140000,60814703140100), (60814702350000,60814702350200), (60814711630000,60814711630500), .....]
mat = []
for i in Par['UWI']:
for j in Chi['UWI']:
if str(i)[0:9] == str(j)[0:9]:
mat.append(str(i),str(j))
mat
Этот код, однако, выдает ошибку, поскольку у меня возникает проблема с добавлением нескольких элементов в список одновременно.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-51-8b0ab9fd7ce5> in <module>()
7 for j in Chi['UWI']:
8 if str(i)[0:9] == str(j)[0:9]:
----> 9 mat.append(str(i),str(j))
10
11 mat
TypeError: append () принимает ровно один аргумент (задано 2)
Мой вопрос:
1.Какой правильный синтаксис для добавления ассоциированного родителя-детские отношения
2. Родительские дочерние отношения не являются 1: 1, так как у меня может быть более одного ребенка на одного родителя, и я хотел бы также включить их.
3. Есть ли лучший способ сделать это?Например, я знаю, что могу использовать понимание списка, но я не понял это правильно из-за добавленного оператора if.Итак, «Как бы я использовал понимание списка с двумя циклами for и оператором if
Я ценю любую другую критику или предложения по улучшению этого кода.
Ссылка на пример данных