Tengo un DataFrame como este:
print(df.words[0])
[('replacement', 1), ('shaver', 2)]
print(df.words[1])
[('filter', 2), ('purifier', 1), ('please', 2)]
Quiero crear una nueva columna, llamada "all_words". La columna, debe representar las cadenas reales, en lugar de números.
('head', 3) should be: "head,head,head"
Salida deseada del ejemplo:
print(df.all_words[0])
'replacement, shaver, shaver'
print(df.all_words[1])
'filter, filter, purifier, please, please'
4 respuestas
Necesitará apply
una función para unir las tuplas a una sola cadena.
df['all_words'] = df.words.apply(lambda x: ', '.join(', '.join([y[0]] * y[1]) for y in x))
Simplemente se resuelve a través del bucle y funciona. Si las palabras son una lista de múltiples tuplas
words = [[('replacement', 2), ('shaver', 2) ], [('filters', 2), ('purifier',1), ('plears', 3) ]]
Loop = words[0] #here you use indexing of words[0] or [1] both
Result = ()
for val in Loop:
v = tuple([val[0] * 1 for _ in range(val[1])])
Result = Result + v
Print(Result)
Puede usar apply:
df = pd.DataFrame(data=[[[('filter', 2), ('purifier', 1), ('please', 2)]]], columns=['words'])
result = df.words.apply(lambda x: ', '.join(word for word, count in x for _ in range(count)))
print(result)
Salida
0 filter, filter, purifier, please, please
Name: words, dtype: object
Puedes hacer esto con df.apply()
Importar pandas como pd
df = pd.DataFrame({'words' : [[('replacement', 1), ('shaver', 2)], [('filter', 2), ('purifier', 1), ('please', 2)]]})
def word_to_words(row):
words_string = ''
for tuple_set in row['words']:
words_string += (tuple_set[0] + ', ') * tuple_set[1]
return(words_string)
df['all_words'] = df.apply(word_to_words, axis=1)
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.