Подтвердить что ты не робот

Как дублировать строки в pandas, на основе элементов в списке

У меня есть фреймворк pandas, который выглядит следующим образом:

COL     data
line1   [A,B,C]

где элементы в столбце данных могут быть либо списком, либо просто разделенными запятыми элементами. Есть ли простой способ получить:

COL     data
line1   A
line1   B
line1   C

Я мог бы перебирать список и вручную дублировать строки через python, но есть ли какой-то волшебный трюк pandas для этого? Ключевым моментом является то, как автоматически дублировать строки.

Спасибо!

4b9b3361

Ответ 1

Вы можете написать простую функцию очистки, чтобы сделать ее списком (предполагая, что это не список запятых, и вы не можете просто использовать ast.literal_eval):

def clean_string_to_list(s):
    return [c for c in s if c not in '[,]']  # you might need to catch errors

df['data'] = df['data'].apply(clean_string_to_list)

Итерация по строкам кажется разумным выбором:

In [11]: pd.DataFrame([(row['COL'], d)
                       for d in row['data']
                       for _, row in df.iterrows()],
                       columns=df.columns)
Out[11]:
     COL data
0  line1    A
1  line1    B
2  line1    C

Боюсь, я не думаю, что pandas специально предназначается для такого рода манипуляций.