Я знаю, что вы спрашиваете, но все же полезно предоставить некоторые входные данные и ожидаемые выходные данные. Я включил случайные входные данные в мой код ниже, так что вы можете просто скопировать и вставить их для запуска и попробовать применить их к вашему фрейму данных:
import pandas as pd
your_dataframe=pd.DataFrame({'a':['1,2,3', '9,8,7'],
'b':['4,5,6', '6,5,4'],
'c':['7,8,9', '3,2,1']})
import copy
def split_cols(df):
dict_of_df = {}
cols=df.columns.to_list()
for col in cols:
key_name = 'df'+str(col)
dict_of_df[key_name] = copy.deepcopy(df)
var=df[col].str.split(',', expand=True).add_prefix(col)
df=pd.merge(df, var, how='left', left_index=True, right_index=True).drop(col, axis=1)
return df
split_cols(your_dataframe)
По сути, в этом решении вы создаете список столбцы, которые вы хотите l oop через. Затем вы проведете oop через этот список и создадите новые кадры данных для каждого столбца, в котором вы запускаете функцию split()
. Затем вы объединяете все вместе в индекс. Я также:
- включил префикс имени столбца, поэтому имена столбцов не имели повторяющихся имен и могли быть более легко идентифицируемыми
- отбросил старый столбец, который мы делили
- Просто
import copy
и используйте созданную мной функцию split_cols()
и передайте имя вашего фрейма данных.