У меня есть датафрейм, который я хочу растопить. Это вход:

col1    col2    col3    col4    col5
file1  text_0  text_1  text_2        
file2  text_0  text_1  text_2  text_3
file3  text_0  

Это выход:

col1  col2
file1 text_0
file1 text_1
file1 text_2
file2 text_0
file2 text_1
file2 text_2
file2 text_3
file3 text_0 
1
user12359215 20 Дек 2019 в 18:42

2 ответа

Лучший ответ

Сначала используйте DataFrame.melt, затем отфильтруйте пустую строку с помощью query и последний столбец удаления variable:

df1 = (df.melt('col1', var_name='col2')
         .query("value != ''")
         .sort_values('col1')
         .drop('col2', axis=1))

print (df1)
     col1   value
0   file1  text_0
3   file1  text_1
6   file1  text_2
1   file2  text_0
4   file2  text_1
7   file2  text_2
10  file2  text_3
2   file3  text_0
2
jezrael 21 Дек 2019 в 05:23