将多行->一行数据帧转换为变量pandas

问题描述

我有很多行的数据框。

enter image description here

如何使下面的此上部数据框具有一行。

enter image description here

import pandas as pd 

# source dataframe
df_source = pd.DataFrame({
    'ID': ['A01','A01'],'Code': ['101','102'],'amount for code': [10000,20000],'count for code': [4,3]
})

# target dataframe
df_target = pd.DataFrame({
    'ID': ['A01'],'Code101': [1],'Code102': [1],'Code103': [0],'amount for code101': [10000],'count for code101': [4],'amount for code102': [20000],'count for code102': [3],'amount for code103': [None],'count for code103': [None],'count for code': [None],'sum of amount': [30000],'sum of count': [7]
})

我尝试使用方法'get.dummies',但它只能用于是否存在该代码

如何处理数据框以创建数据集?

解决方法

您可以遍历现有数据框的行并填充(使用.at或.loc)新数据框(df2)。 df2具有唯一的索引ID。

import pandas as pd

df = pd.DataFrame({
    'ID': ['A01','A01'],'Code': ['101','102'],'amount for code': [10000,20000],'count for code': [4,3]
})

df2 = pd.DataFrame()
for idx,row in df.iterrows():
    for col in df.columns: 
        if col !='ID' and col !='Code': 
                    df2.at[row['ID'],col+row['Code']]=row[col]
        
,

您可以使用pivot_table:

df_result = df.pivot_table(index='ID',columns='Code',values=['amount for code','amount for code'])

这将返回具有多级列索引的数据帧,例如('101','amount for code') 然后,您可以添加其他计算列,例如金额总和等等。