#python #python-3.x #pandas #list #dataframe
#python #python-3.x #pandas #Список #фрейм данных
Вопрос:
df fruit date price cost var1
0 apple 2017-01-01 2 2 20
1 apple 2017-01-02 3 3 40
2 banana 2017-01- 02 4 4 20
2 banana 2017-01-02 4 4 10
Есть ли способ сгенерировать фрейм данных с первым отличием (fd_df), который сохраняет fruit, var1, date из df, но сначала отличает все остальные переменные от fruit? У меня есть 20 столбцов для первого различия (включая цену и себестоимость), поэтому нужен обобщенный код.
Комментарии:
1. можете ли вы добавить ожидаемый выходной код / фрейм данных? Что такое «первое отличие»?
Ответ №1:
IIUC, вы можете set_index
сохранить столбец, который вы хотите, как есть, и использовать groupby.diff
в fruit, а затем reset_index
вернуть индекс в виде столбцов.
df_ = (df.set_index(['fruit','date','var1'])
.groupby(level='fruit').diff()
.reset_index()
)
print(df_)
fruit date var1 price cost
0 apple 2017-01-01 20 NaN NaN
1 apple 2017-01-02 40 1.0 1.0
2 banana 2017-01-02 20 NaN NaN
3 banana 2017-01-02 10 0.0 0.0