python - 将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
解决方案
使用熊猫pivot_table()
方法。你可以在这里阅读更多关于它的信息。
values
属于val
列,我们将保留的索引是and date
,col1
我们想从col2
col 中“创建”列。
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
推荐阅读
- sql - 如何将一个表的所有行附加到另一个表,包括重复的行?
- java - 如何动态将jsp正文插入瓷砖1.1
- python - 如何将SVG字符串保存到python中的文件
- javascript - 无法使用python selenium点击facebook页面的LIKE按钮
- asp.net-identity - 无区域的 Blazor 托管标识
- sql - SQL WITH AVG GROUP BY
- sql - 子查询未从其他表返回计数值
- javascript - 来自单独应用程序的反应组件未集成到主应用程序中
- java - 获取 java.sql.SQLIntegrityConstraintViolationException:无法添加或更新子行:外键约束失败
- flutter - Flutter/Firebase 命令 PhaseScriptExecution 失败,退出代码非零,