Python 熊猫快速运动

Python 熊猫快速运动,python,pandas,Python,Pandas,我有这样一个数据集: ID Type Value 01 A $10 01 B $12 01 C $14 02 B $20 02 C $21 03 B $11 我想将其转换为: ID TypeA TypeB TypeC 01 $10 $12 $14 02 $0 $20 $21 03 $0 $11 $0 我唯一的解决方案是一堆if循环,但没有几个线性循环。有人能帮我解决这个python(熊猫)问题吗 谢谢将前两列转换为多索引(两级索

我有这样一个数据集:

ID Type Value
01 A    $10
01 B    $12
01 C    $14
02 B    $20
02 C    $21
03 B    $11
我想将其转换为:

ID TypeA TypeB TypeC
01 $10   $12   $14
02 $0    $20   $21
03 $0    $11   $0
我唯一的解决方案是一堆if循环,但没有几个线性循环。有人能帮我解决这个python(熊猫)问题吗


谢谢

将前两列转换为多索引(两级索引)。取消数据帧的堆栈(将第二个级别的行索引转换为列索引)。用
“$”
填补空白:

更新列名:

d.columns = 'Type' + d.columns.levels[1]
结果是:

Type TypeA TypeB TypeC
ID                    
01     $10   $12   $14
02      $0   $20   $21
03      $0   $11    $0
如果索引名
'Type'
困扰您,请禁用它:

d.columns.name = None
最后,如果希望ID是列而不是索引,请重置索引:

d.reset_index(inplace=True)
最终结果:

   ID TypeA TypeB TypeC
0  01   $10   $12   $14
1  02    $0   $20   $21
2  03    $0   $11    $0
你可以用熊猫

试试这个

import pandas as pd
我为您的示例数据创建了一个名为psort.txt的数据文件

ID,Type,Value
01,A,$10
01,B,$12
01,C,$14
02,B,$20
02,C,$21
03,B,$11
并进口,

df = pd.read_csv('psort.txt', header=0)

  ID Type Value
0   1    A   $10
1   1    B   $12
2   1    C   $14
3   2    B   $20
4   2    C   $21
5   3    B   $11
然后我旋转数据帧

df=df.pivot(index='ID',columns='Type', values='Value')
下面我用0填充NaN值,但可以用“$0”填充

df=df.fillna(0)

print(df)

Type    A    B    C
ID                 
1     $10  $12  $14
2       0  $20  $21
3       0  $11    0
尝试
df.pivot(index='ID',columns='Type')
df=df.fillna(0)

print(df)

Type    A    B    C
ID                 
1     $10  $12  $14
2       0  $20  $21
3       0  $11    0