#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. Какую ошибку вы получаете? Все, что я предположил, это то, что все ваши данные являются итеративными (одноэлементные наборы не проблема).