将行值设置为列并根据另一列的行值填充它
set row's value become column and fill it based on other column's row's value
我有一个这样的数据框:
id category year freq
101 1 2020 1
101 1 2021 1
202 2 2020 2
202 2 2021 6
203 3 2021 2
我需要根据 id、类别和年份值转换数据框,并用年份的频率填充年份值。期望的输出是:
id category 2020 2021
101 1 1 1
202 2 2 6
203 3 0 2
我试过使用一种热编码,但我无法用频率填充每一年的列。
似乎是 df.pivot_table
的工作。请注意,我们将使用 fill_value=0
将缺失值替换为 0(以匹配您的预期输出):
>>> df.pivot_table(values="freq", index=["id", "category"], columns="year", fill_value=0)
year 2020 2021
id category
101 1 1 1
202 2 2 6
203 3 0 2
我有一个这样的数据框:
id category year freq
101 1 2020 1
101 1 2021 1
202 2 2020 2
202 2 2021 6
203 3 2021 2
我需要根据 id、类别和年份值转换数据框,并用年份的频率填充年份值。期望的输出是:
id category 2020 2021
101 1 1 1
202 2 2 6
203 3 0 2
我试过使用一种热编码,但我无法用频率填充每一年的列。
似乎是 df.pivot_table
的工作。请注意,我们将使用 fill_value=0
将缺失值替换为 0(以匹配您的预期输出):
>>> df.pivot_table(values="freq", index=["id", "category"], columns="year", fill_value=0)
year 2020 2021
id category
101 1 1 1
202 2 2 6
203 3 0 2