Как получить элементы из набора в pandas dataframe?

#python #pandas #set

#python #pandas #набор

Вопрос:

У меня очень большой фрейм данных, все значения столбцов которого являются наборами, set() . Например, например:

 index    val1         val2
    1    {reg, sgs}   {dsggs, sgsg}
    2    {34, gsg}    {sdg, 23}
 

Я хочу получить только их элементы или значения. Какой самый простой способ сделать это?

   index    val1       val2
      1    reg, sgs   dsggs, sgsg
      2    34, gsg    sdg, 23
 

Спасибо

Комментарии:

1. Элементы как в строке?

2. pd.Series.str.join(', ') ?

3. Какова здесь конечная цель? это для косметических целей или вам нужно провести некоторый анализ?

4. @DaniMesejo некоторые из них содержат строки, другие числа. Для меня я могу получить их в виде строки.

5. @Ch3steR У меня 156 столбцов, поэтому я должен использовать его непосредственно для всего фрейма данных, а не по столбцам. по столбцам..

Ответ №1:

Используется df.applymap для применения функции к каждому значению в каждом столбце.

 import pandas as pd


def main():
    df = pd.DataFrame(data={
        'val1': [{'reg', 'sgs'}, {34, 'gsg'}],
        'val2': [{'dsggs', 'sgsg'}, {'sdg', 23}],
    })
    print(df.applymap(lambda s: ", ".join(map(str, s))))


if __name__ == '__main__':
    main()
 

Вывод:

        val1         val2
0  reg, sgs  dsggs, sgsg
1   gsg, 34      sdg, 23
 

Комментарии:

1. Какую ошибку вы получаете? Все, что я предположил, это то, что все ваши данные являются итеративными (одноэлементные наборы не проблема).