Ваши данные в столбце address
- это список, а не строка. Сначала вам нужно получить доступ к первому элементу этого списка (который является строкой), а затем выполнить разделение.
# Sample Data:
df = pd.DataFrame({
"name": ['711-2880', '971-2880'],
"address": [['Mankato\n96522\n(257) 563-7401'], ['CA\n965\n(01) 563-7401\nNebraska']]}
)
>>> df['address'].apply(lambda col: col[0].split('\n'))
0 [Mankato, 96522, (257) 563-7401]
1 [CA, 965, (01) 563-7401, Nebraska]
Name: address, dtype: object
В случае, если некоторые записи адреса пусты, вы можете просто работать надподмножество, имеющее хотя бы один элемент списка (игнорируя данные, если в списке более одного элемента).
mask = df['address'].apply(len).gt(0)
df.loc[mask, 'address'] = df.loc[mask, 'address'].apply(lambda col: col[0].split('\n'))