Pandas объединяет одинаковые строки значений и разделяет столбцы с разными значениями

#python #pandas

#python #pandas

Вопрос:

Предположим, у меня есть следующий фрейм данных:

 ID  Year   Month   count 
1   2017    8       20   
2   2018    8       16   
3   2017    8       4
1   2018    8       109
3   2018    8       4
  

Я пытаюсь получить выходные данные в следующем формате:

 ID  Year_2017  Year_2018   Month    
1     20           109       8       
2     16                     8
3     4             4        8      
  

Не: — В принципе, я хочу разделить столбец Year и Count на разные ID

Ответ №1:

Суть в том, чтобы разделить это на сроки за год и объединить с идентификатором. Остальное — это имена столбцов и удаление ненужных столбцов.

 df2017 = df[df['Year'] == 2017]
df2018 = df[df['Year'] == 2018]
new = df2018.merge(df2017, on='ID', how='outer')
new.columns = ['ID', 'tmp_x', 'Month', 'Year_2018', 'tmp_y', 'tmp_month', 'Year_2017']
new.drop(['tmp_x','tmp_y','tmp_month'], axis=1, inplace=True)
new = new[['ID', 'Year_2017', 'Year_2018','Month', ]]
new.sort_values('ID', ascending=True, inplace=True)
new

ID  Year_2017   Year_2018   Month
1   1   20.0    109 8
0   2   NaN 16  8
2   3   4.0 4   8