旋转更宽 Pandas DataFrame
Pivot Wider Pandas DataFrame
您好,我正试图在 Python 中将我的数据从长轴转向宽轴。我对这里的其他一些答案感到困惑,混合使用 pivot 或 set_index 和 unstack,以及分层索引等的人
下面是一个 4 列 9 行的示例 df。我希望能够旋转数据,以便每个唯一 id
恰好有 1 行,其中包括像 Jan 2021 sales
和 Jan 2021 profit
这样的列。所以每个月的销售额和利润都会有自己的列。
import pandas as pd
from datetime import datetime, timedelta
sample_df = pd.DataFrame({
'id': [1, 1, 1, 2, 2, 2, 3, 3, 3],
'month': ['Jan 2021', 'Feb 2021', 'Mar 2021', 'Jan 2021', 'Feb 2021', 'Mar 2021', 'Jan 2021', 'Feb 2021', 'Mar 2021'],
'sales': [100, 200, 300, 400, 500, 600, 700, 800, 900],
'profit': [10, 20, 30, 40, 50, 60, 70, 80, 90]}
)
sample_df_pivot = xxx
理想情况下它应该是这样的
如有任何帮助,我们将不胜感激!
这是您要找的吗?
sample_df.pivot(index='id', columns ='month')
sales profit
month Feb 2021 Jan 2021 Mar 2021 Feb 2021 Jan 2021 Mar 2021
id
1 200 100 300 20 10 30
2 500 400 600 50 40 60
3 800 700 900 80 70 90
试试这个:
df = sample_df.pivot(columns='month', index='id')
df.columns = df.columns.swaplevel().map(' '.join)
输出:
>>> df
Feb 2021 sales Jan 2021 sales Mar 2021 sales Feb 2021 profit Jan 2021 profit Mar 2021 profit
id
1 200 100 300 20 10 30
2 500 400 600 50 40 60
3 800 700 900 80 70 90
您好,我正试图在 Python 中将我的数据从长轴转向宽轴。我对这里的其他一些答案感到困惑,混合使用 pivot 或 set_index 和 unstack,以及分层索引等的人
下面是一个 4 列 9 行的示例 df。我希望能够旋转数据,以便每个唯一 id
恰好有 1 行,其中包括像 Jan 2021 sales
和 Jan 2021 profit
这样的列。所以每个月的销售额和利润都会有自己的列。
import pandas as pd
from datetime import datetime, timedelta
sample_df = pd.DataFrame({
'id': [1, 1, 1, 2, 2, 2, 3, 3, 3],
'month': ['Jan 2021', 'Feb 2021', 'Mar 2021', 'Jan 2021', 'Feb 2021', 'Mar 2021', 'Jan 2021', 'Feb 2021', 'Mar 2021'],
'sales': [100, 200, 300, 400, 500, 600, 700, 800, 900],
'profit': [10, 20, 30, 40, 50, 60, 70, 80, 90]}
)
sample_df_pivot = xxx
理想情况下它应该是这样的
如有任何帮助,我们将不胜感激!
这是您要找的吗?
sample_df.pivot(index='id', columns ='month')
sales profit
month Feb 2021 Jan 2021 Mar 2021 Feb 2021 Jan 2021 Mar 2021
id
1 200 100 300 20 10 30
2 500 400 600 50 40 60
3 800 700 900 80 70 90
试试这个:
df = sample_df.pivot(columns='month', index='id')
df.columns = df.columns.swaplevel().map(' '.join)
输出:
>>> df
Feb 2021 sales Jan 2021 sales Mar 2021 sales Feb 2021 profit Jan 2021 profit Mar 2021 profit
id
1 200 100 300 20 10 30
2 500 400 600 50 40 60
3 800 700 900 80 70 90