Привет У меня в настоящее время есть функция, которая может разбивать значения в одной ячейке, которая разделена новой строкой. Однако функция, приведенная ниже, принимает меня только для того, чтобы проходить через один столбец за раз, думал, есть ли другие способы, которыми я могу передать его через несколько столбцов или фактически весь фрейм данных.
Пример будет такой
A B C
1\n2\n3 2\n\5 A
Код ниже
def tidy_split(df, column, sep='|', keep=False):
indexes = list()
new_values = list()
df = df.dropna(subset=[column])
for i, presplit in enumerate(df[column].astype(str)):
values = presplit.split(sep)
if keep and len(values) > 1:
indexes.append(i)
new_values.append(presplit)
for value in values:
indexes.append(i)
new_values.append(value)
new_df = df.iloc[indexes, :].copy()
new_df[column] = new_values
return new_df
В настоящее время работает, когда я запускаю
df1 = tidy_split(df, 'A', '\n')
После запуска функции выбора только столбца A
A B C
1 2\n5 A
2 2\n5 A
3 2\n5 A
Я надеялся, что смогу передать не только принятый аргумент, но и в этом случае разделительный столбец «B». Ранее я пытался передать лямбду или пытался использовать apply, но для этого требовался позиционный аргумент «column». Буду признателен за любую помощь, оказанную! Думал, возможна ли петля
РЕДАКТИРОВАТЬ: Желаемый вывод, так как каждый номер относится к чему-то важному
До
A B C
1\n2\n3 2\n5 A
После
A B C
1 2 A
2 5 A
3 n/a A