数据框:创建新列并从现有列的值中分配其值

问题描述 投票:0回答:1

我从 Kaggle 下载了一个用于我的项目的数据集,我想寻求帮助来创建新列并根据现有列分配其值。

我的实际数据集很复杂,我将给出一个类似但更简单的数据集以便于讨论。

输入:

Month  | Fruit  | Weight
------- -------- --------
1-2020 | Orange | 0.2
1-2020 | Kiwi   | 0.9
2-2020 | Orange | 2.1
2-2020 | Kiwi   | 1.4
...... | .....  | ...

为了能够创建所需的折线图,我需要更改此数据集结构,使用

"Orange", "Kiwi"
值创建
Weight
新列,以便
"Month'
不重复。

所需输出:

    Month  | Orange| Kiwi
    ------- -------- --------
    1-2020 | 0.2   | 0.9
    2-2020 | 2.1   | 1.4

任何帮助将不胜感激

python dataframe
1个回答
0
投票

您正在寻找的基本东西是一个支点:

import pandas as pd

data = {
    'Month': ['1-2020', '1-2020', '2-2020', '2-2020'],
    'Fruit': ['Orange', 'Kiwi', 'Orange', 'Kiwi'],
    'Weight': [0.2, 0.9, 2.1, 1.4]
}
df = pd.DataFrame(data)

pivot_df = df.pivot_table(index='Month', columns='Fruit', values='Weight', fill_value=0)

print(pivot_df)

输出:

Fruit   Kiwi  Orange
Month               
1-2020   0.9     0.2
2-2020   1.4     2.1

如果您希望将月份作为列而不是索引:

pivot_df.reset_index(inplace=True)
pivot_df.columns.name = None

print(pivot_df)

输出:

    Month  Kiwi  Orange
0  1-2020   0.9     0.2
1  2-2020   1.4     2.1

如果原始数据中存在重复的 Month 和 Fruit 组合,并且您想要将它们相加(例如):

data = {
    'Month': ['1-2020', '1-2020', '1-2020', '2-2020', '2-2020'],
    'Fruit': ['Orange', 'Kiwi', 'Kiwi', 'Orange', 'Kiwi'],
    'Weight': [0.2, 0.9, 1.1, 2.1, 1.4]
}
df = pd.DataFrame(data)

pivot_df = df.pivot_table(index='Month', columns='Fruit', values='Weight', aggfunc='sum', fill_value=0)
print(pivot_df)

输出:

Fruit   Kiwi  Orange
Month               
1-2020   2.0     0.2
2-2020   1.4     2.1
© www.soinside.com 2019 - 2024. All rights reserved.