Мое решение работает только со столбцом attributeName
, потому что из данных примера есть все данные, необходимые для вывода.
Используйте Series.str.split
сначала ,
, затем измените DataFrame
на DataFrame.stack
и разделите на .
:
df1 = (df['attributeName'].str.split(', ', expand=True)
.stack()
.str.split('.', expand=True)
.reset_index(drop=True))
df1.columns = ['tableName','attributeName']
print (df1)
tableName attributeName
0 film languageId
1 language languageID
2 invetory inventoryId
3 rental filmId
EDIT:
Если значения являются списками, используйте DataFrame
конструктор:
print (type(df.loc[1, 'attributeName']))
<class 'list'>
df1 = (pd.DataFrame(df['attributeName'].values.tolist())
.stack()
.str.split('.', expand=True)
.reset_index(drop=True))
df1.columns = ['tableName','attributeName']
print (df1)
tableName attributeName
0 film languageId
1 language languageID
2 invetory inventoryId
3 rental filmId