У меня есть dataframe, который выглядит
Country | IndicatorName | Value
Spain | Indicator1 | 3
Spain | Indicator2 | 4
Germany | Indicator16 | 24
......
И я хочу преобразовать его в dataframe с столбцами IndicatorName, рядами Country и пересечениями значений
Country | Indicator 1 | Indicator 2 | Indicator 3 | ......
Spain | 3 | 4 | 16 | ......
Germany | 23 | 232 | 232 | ......
.......
Я пытаюсь через groupby (["IndicatorName", "Value"]), но не уверен, как действовать
import pandas as pd
indicators = pd.read_csv("Indicators.csv")
indicators.groupbby(["IndicatorName","Value"])
.....
Есть ли подходящий способ справиться с этим или это нужно делать с помощью итерации?
Я не уверен в формате inital df, так как желаемый df имеет разные значения.
Помогает ли ниже?
df = pd.DataFrame({'Country' : ['Spain', 'Spain', 'Germany'],
'IndicatorName':['Indicator1', 'Indicator2', 'Indicator16'],
'Value':[3, 4, 24]
})
df.pivot(index = 'Country', columns='IndicatorName', values='Value').fillna(0)
IndicatorName Indicator1 Indicator16 Indicator2
Country
Germany 0.0 24.0 0.0
Spain 3.0 0.0 4.0
Я думаю, что вам нужна pivot
:
df1 = df.pivot(index='Country', columns='IndicatorName', values='Value')
Вывод строк вашего примера:
IndicatorName Indicator1 Indicator16 Indicator2
Country
Germany NaN 24.0 NaN
Spain 3.0 NaN 4.0