У меня есть список идентификаторов (IDList), которые являются подмножеством списка наборов, содержащих эти идентификаторы и связанные идентификаторы в String-Format. Могут быть наборы с одним идентификатором, например, (1694, 1743), два родственных
Идентификаторы разделяются запятой, например (3252, «3253,3254») или без идентификатора («нет»).
Я хотел бы записать все идентификаторы из наборов, которые связаны с идентификаторами в IDList, в один общий список (final_list). Поэтому элементы, содержащие два идентификатора, должны быть разделены запятой, а элементы, содержащие «нет», должны быть удалены.
Вот так выглядит мой код прямо сейчас:
IDList = [1694, 3252, 2779]
related = [(1694, '1743'), (3252, '3253,3254'), (3253, '3252,3254'), (3254, '3252,3253'), (1743, '1694'), (2779, 'none'), (3251, 'none'), (1677, 'none'), (1676, 'none'), (1678, '1679'), (1679, '1678')]
final_list = []
related_frame = pd.DataFrame(related)
print(related_frame)
for n in l:
dset = related_frame.loc[related_frame[0] == n]
print (dset)
rel_set = dset[1]
rel_set = str(rel_set)
if "," in rel_set:
rel_set = rel_set.split(',')
print(rel_set)
if "none" in rel_set:
rel_set = []
final_list.append(rel_set)
print(final_list)
В формате dataframe он все еще выглядит как ожидалось:
print(related_frame)
из
0 1
0 1694 1743
1 3252 3253,3254
2 3253 3252,3254
3 3254 3252,3253
4 1743 1694
5 2779 none
6 3251 none
7 1677 none
8 1676 none
9 1678 1679
10 1679 1678
Однако, как только я начинаю работать только со связанными значениями, Python по какой-то причине добавляет информацию о типе в значения.
Итак, final_list выглядит так:
print(final_list)
[['0 1743\nName: 1', ' dtype: object'], ['1 3253', '3254\nName: 1', ' dtype: object']]
Я бы хотел, чтобы это было так:
print(final_list)
[1743, 3253, 3254]
Кто-нибудь знает, как получить доступ к значениям из объектов в наборах без информации \ nName, dtype и т. Д.? Так что я просто хотел бы прочитать простое значение. Данные в связанном списке получены из столбца varchar в базе данных SAP HANA, поэтому они не являются какими-либо исключительными объектами.
Я знаю, что могу удалить их, используя
str.replace("\nName: 1', ' dtype: object", "")
Но нет ли более удобного способа? В этом случае final_list также будет выглядеть так (и я бы предпочел иметь его, как указано выше):
[['0 1743'], ['1 3253', '3254']]