2024-09-29 02:24:18 发布
网友
我有这样一个数据集:
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 = df.set_index(['ID', 'Type']).unstack().fillna('$0')
更新列名:
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'困扰您,请禁用它:
'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
将前两列转换为多索引(两级索引)。取消数据帧的堆栈(将第二级行索引转换为列索引)。用
"$"
填空:更新列名:
结果是:
如果索引名
'Type'
困扰您,请禁用它:最后,如果希望ID是列而不是索引,请重置索引:
最终结果:
你可以用熊猫
试试这个
我为您的示例数据创建了一个名为psort.txt文件. 你知道吗
然后导入
然后旋转数据帧
下面我用0填充NaN值,但可以用“$0”填充。你知道吗
相关问题 更多 >
编程相关推荐