Как превратить его элемент списка в строку?

#pandas #list #dataframe #for-loop

Вопрос:

У меня есть такие списки в столбце фрейма данных:

 list1 = [[Petitioner Jae Lee,his,he],[]]

list2 = [[lee],[federal officials]]

list3 = [[],[lawyer]]
 

Но я хочу превратиться в

 list1 = ['Petitioner Jae Lee' , 'his','he']
list2 = ['lee' , 'federal officials']]
list3 = ['lawyer']
 

и я хочу сделать это для столбца во фрейме данных. Как я могу это сделать?

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

1. Как вы читаете в этих данных? Текущие Панды, скорее всего, по умолчанию уже введут это в качестве строки. Прежде чем вы исправите то, что не должно быть проблемой, вы, возможно, захотите вернуться к началу.

Ответ №1:

 list1 = [['Petitioner Jae Lee','his','he'],[]]
list2 = [['lee'],['federal officials']]
list3 = [[],['lawyer']]

flat_list1 = [item for sublist in list1 for item in sublist]
flat_list2 = [item for sublist in list2 for item in sublist]
flat_list3 = [item for sublist in list3 for item in sublist]

print(flat_list1)
print(flat_list2)
print(flat_list3)
 

Ответ №2:

Используйте Series.map для применения логики по строкам.

Чтобы объединить подсписки в один список, вы можете использовать встроенную sum функцию

 df['col'] = df['col'].map(lambda list_i : sum(list_i, []))
 

Лучшей альтернативой является распаковка подсписков и передача их в itertools.chain

 import itertools as it 
df['col'] = df['col'].map(lambda list_i : list(it.chain(*list_i)))
 

Или используйте понимание вложенного списка

 df['col'] = df['col'].map(lambda list_i : [string for sublist in list_i for string in sublist])