Я очищаю грязный фрейм данных, где некоторая необходимая информация появляется в именах столбцов.Эта информация должна слиться в один столбец, который будет создан.
index name animal fruit veg
--------------------------------------------------
0 cow animal NaN NaN
1 apple NaN fruit NaN
2 carrot NaN NaN veg
3 dog animal NaN NaN
4 horse animal NaN NaN
5 car NaN NaN NaN
6 pear NaN fruit NaN
7 pepper NaN NaN veg
8 cucumber NaN NaN veg
9 house NaN NaN NaN
Я пытался использовать функцию pandas.melt()
, однако она возвращает много строк с "неправильными" значениями NaN
и дубликатов,
Некоторые строки должны отображать NaN
, но только те, которые не вписываются в категории, указанные в именах столбцов, поэтому я не могу использовать pandas.dropna()
.
Также я не могу быть уверен, что удаление дубликатов не приведет к удалению важных данных.
Это код, который я использовал:
import pandas as pd
pd.melt(df, id_vars=['index', 'name'],
value_vars=['animal', 'fruit', 'veg'],
var_name='type')
Нужный мне результатдолжен выглядеть примерно так:
index name type
--------------------------------------------------
0 cow animal
1 apple fruit
2 carrot veg
3 dog animal
4 horse animal
5 car NaN
6 pear fruit
7 pepper veg
8 cucumber veg
9 house NaN