将行的值设置为列并根据其他列的行值填充它

发布于 2025-01-11 01:32:58 字数 417 浏览 1 评论 0原文

我有一个像这样的数据框:

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

我尝试使用一种热编码,但我无法用频率填充每年的列。

i have a dataframe like this:

id  category    year    freq
101 1           2020    1
101 1           2021    1
202 2           2020    2
202 2           2021    6
203 3           2021    2

I need to transform the dataframe based on id, category and year's value and fill the year's value with frequency for the year. The desired output is:

id  category    2020    2021
101 1           1       1
202 2           2       6
203 3           0       2

i have tried using one hot encoding, but the i can't fill each year's column with frequency.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情深缘浅 2025-01-18 01:32:58

似乎是 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

Seems like a job for df.pivot_table. Notice that we'll use fill_value=0 to replace missing values with 0 (to match your expected output):

>>> 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文