我有以下数据框

import pandas as pd
Dat = pd.DataFrame({'a' : ['A', 'A', 'B', 'B'], 'b' : ['X', 'Y', 'X', 'Y'], 'val' : [1,12,-3,23]})

现在,我想对上面的数据框进行整形,并按如下方式重新排列

pd.DataFrame({'A' : [1,1,0,0], 'B' : [0,0,1,1], 'X' : [1,0,1,0], 'Y' : [0,1,0,1], 'val' : [1,12,-3,23]})

基本上,原始数据帧中的列a & b的值作为列放入新数据帧中,并使用1/0填充新数据帧的相应单元格.

在Python中有没有什么直接的函数/方法可以帮助实现这一点呢?

推荐答案

pandas.get_dummies次运行时:

pd.get_dummies(df, columns=['a', 'b'], prefix='', prefix_sep='').astype(int)

   val  A  B  X  Y
0    1  1  0  1  0
1   12  1  0  0  1
2   -3  0  1  1  0
3   23  0  1  0  1

Python-3.x相关问答推荐

使用pybind11时,在sys.exit(0)处成功完成测试后,Python单元测试冻结

Python gpsd客户端

TypeError:&Quot;Value&Quot;参数必须是标量、Dict或Series,但您传递了&Quot;Index&Quot;

具有多个值的极轴旋转和熔化/取消旋转(反转旋转)操作(Pandas 堆叠/取消堆叠交替/UDF覆盖)

PythonPandas 创建一个列并添加到DataFrame

将f-字符串放置在f-字符串内

PythonPandas READ_EXCEL空数据帧

我们可以在每个可以使用 Pandas Join 的用例中使用 Pandas merge 吗?

如何立即从asyncio.Task获取异常?

调用 Clear 时 Airflow 会加载新代码吗

如何在类中的函数(以 self 作为第一个参数)中使用递归

在判断列表变量时如何判断特定列的值并分配加权整数值

在 jupyter notebook 的单元格中使用 sudo

pythondecorator中的变量范围

PySpark python 问题:Py4JJavaError: An error occurred while calling o48.showString

Python3 mysqlclient-1.3.6(又名 PyMySQL)的用法?

创建日志(log)文件

在 Python 3 中调用 super() 的 4 种方法中的哪一种?

如何在 Pandas 中的超 Big Data 框上创建数据透视表

如何避免使用我的 python 包构建 C 库?