如何在Pandas中重塑数据框?

我在一个数据集上尝试一些机器学习。我对Python中的pandas/numpy还比较陌生,所以我无法找到解决方案。我使用pandas的read_csv函数得到一个数据框。数据框如下所示

ID   ATTR  QUANTITY17   203      1417   201      817   111      1159  80       5178  82       16

我希望将这个数据框重塑/扁平化为如下形式:

    ID  | attr1 | attr2 | attr3 | totalQuantity..................goes on===========================================================    17  |  203  |  201  |  111  |   23 (即ID等于17的总和)    159 |  80   |   0   |   0   |   5    178 |  82   |   0   |   0   |   16    ....

非常感谢提供一段代码。提前感谢


回答:

首先通过cumcount创建用于透视的att列。然后对df1使用pivot,对df2使用groupbysum。最后通过mergedf1df2合并,并使用fillna填充为0

print df     ID  ATTR  QUANTITY0    17   203        141    17   201         82    17   111         13    17   203        144    17   201         85    17   111         16    17   203        147    17   201         88    17   111         19    17   203        1410   17   201         811   17   111         112  159    80         513  178    82        16#添加att列用于计数组项目df['att'] = df.groupby('ID')['ID'].cumcount() + 1#使用att列透视dfdf1 = df.pivot(index='ID', columns='att', values='ATTR').reset_index()#在列名中添加'attr'字符串df1.columns =  [df1.columns[0]] + ['attr' + str(col) for col in df1.columns[1:]] df2 = df.groupby('ID')['QUANTITY'].sum().reset_index()#与总和合并print pd.merge(df1, df2 , on=['ID']).fillna(0)
    ID  attr1  attr2  attr3  attr4  attr5  attr6  attr7  attr8  attr9  attr10  \0   17    203    201    111    203    201    111    203    201    111     203   1  159     80      0      0      0      0      0      0      0      0       0   2  178     82      0      0      0      0      0      0      0      0       0      attr11  attr12  QUANTITY  0     201     111        92  1       0       0         5  2       0       0        16  

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注