Важно понять, как apply
должен работать, чтобы понять, почему он не работает для вас.Каждый столбец (с учетом значения по умолчанию axis=0
) итеративно обрабатывается, вы можете увидеть, как, позволяя каждой серии печатать саму себя:
df.apply(lambda x: print(x))
0 [1,6]
1 [1,7]
Name: list1, dtype: object
0 [1,1]
1 [1,2]
Name: list2, dtype: object
И когда вы пытаетесь вызвать (series_object).strip()
, ошибка имеет больше смысла.
Поскольку вы хотите применить свою функцию к каждой ячейке отдельно, вместо этого вы можете использовать applymap
, это сравнительно быстрее по сравнению.
df[['list1','list2']].applymap(ast.literal_eval)
Или
df[['list1','list2']].applymap(pd.eval)
list1 list2
0 [1, 6] [1, 1]
1 [1, 7] [1, 2]
Другие опции также включают в себя:
df.apply(lambda x: x.map(ast.literal_eval))
list1 list2
0 [1, 6] [1, 1]
1 [1, 7] [1, 2]
Среди других.