проблемы с пандами: объединение двух строк в одном фрейме данных

#python #pandas #dataframe #pandas-groupby

Вопрос:

Мне нужно объединить все строки с одним и тем же индексом в одном фрейме данных. У меня есть решение в переполнении стека, но я столкнулся с некоторыми проблемами:

 import pandas as pd
import numpy as np

three = {'name':['ming', 'viper', 'rookie'], 'year':[1997, 1998, np.nan]}
one = {'name':['rookie'], 'year':[1995]}
df3 = pd.DataFrame(three, index=['rng', 'edg', 'ig'])
df2 = pd.DataFrame(one, index=['ig'])
df_concat = pd.concat([df2, df3])
print(df_concat) 

df_concat-это:

введите описание изображения здесь

Я использую метод grouby() таким образом:

 df_g = df_concat.groupby(level=0, sort=False).sum()
print(df_g) 

Однако результат оказался не таким, как я ожидал:
введите описание изображения здесь

Почему столбец «имя» потерян?

Ответ №1:

Попробуйте через agg() :

 df_g=df_concat.groupby(level=0, sort=False).agg({'name':'first','year':'sum'})
 

выход из df_g :

        name     year
ig     rookie   1995.0
rng     ming    1997.0
edg     viper   1998.0
 

Примечание: В этом коде df_concat.groupby(level=0, sort=False).sum() , поскольку значения в столбце name не являются числовыми, это не включает значения столбца name и выполняется sum() в зависимости от года