首页 > 解决方案 > 将python数据框行旋转到列

问题描述

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

       date      col1       col2    val
0   2019-01-01    A         hello   12
1   2019-01-01    A           hi    10
2   2019-01-02    B         hello   5
3   2019-01-02    B           hi    6

我想把它转换成

       date      col1       hello  hi
0   2019-01-01    A           12    10
1   2019-01-02    B            5    6

标签: python

解决方案


使用熊猫pivot_table()方法。你可以在这里阅读更多关于它的信息。

values属于val列,我们将保留的索引是and datecol1我们想从col2col 中“创建”列。

df = pd.pivot_table(df, values='val', index=['date', 'col1'],columns=['col2'], aggfunc=np.sum, fill_value=0)

请注意,可能某些值是NaN,上述函数会0根据fill_value参数自动将它们设置为 。

输入:

import pandas as pd
import numpy as np

a = ['2019-01-01', 'A', 'hello', 12]
b = ['2019-01-01', 'A', 'hi', 10]
c = ['2019-01-02', 'B', 'hello', 5]
d = ['2019-01-02', 'B', 'hi', 6]
df = pd.DataFrame([a, b, c, d], columns=['date', 'col1', 'col2', 'val'])

df = pd.pivot_table(df, values='val', index=['date', 'col1'],columns=['col2'], aggfunc=np.sum, fill_value=0)

print(df)

输出:

col2             hello  hi
date       col1           
2019-01-01 A        12  10
2019-01-02 B         5   6

推荐阅读