首页 > 解决方案 > 转置数据框熊猫后将结构保留为普通数据框

问题描述

数据帧和转置代码

import pandas as pd
df = pd.DataFrame({'BRAND': ['HERO','LOCAL','KEJAL','J&J'],
    'SKU': ['BIKES','MATS', 'BLANKETS', 'CREAMS'],
                   'JAN15 SVAL': [1,3,6,10],
                   'FEB15 SVAL': [4,5, 6,16],
                'MAR15 SVAL':[13, 14,10,12]})
dft1 = df.set_index('SKU').T

数据框的结构:

df.columns
Index(['BRAND', 'SKU', 'JAN15 SVAL', 'FEB15 SVAL', 'MAR15 SVAL'], dtype='object')

转置结构:

dft1.columns
Index(['BIKES', 'MATS', 'BLANKETS', 'CREAMS'], dtype='object', name='SKU')

现在转置和普通数据帧的结构之间的区别在于,在转置中,name='SKU' 显示为 dtype 对象的名称。我知道我可以使用重命名轴等来删除 dtype object 的 name=SKU,但这并没有改变 df 和 dft1 的结构不同的事实我怎样才能简单地为 dft1 保留与数据帧 df 相同的结构

当前转置数据帧 (最后注意 name='SKU')

[IN]dft1.columns
[OUT]    Index(['BIKES', 'MATS', 'BLANKETS', 'CREAMS'], dtype='object', name='SKU')

预期产出

[IN]dft1.columns
[OUT]   Index(['BIKES', 'MATS', 'BLANKETS', 'CREAMS'], dtype='object')

代码尝试:

[IN] dft1
[OUT]
 SKU        BIKES   MATS BLANKETS CREAMS
BRAND       HERO  LOCAL    KEJAL    J&J
JAN15 SVAL     1      3        6     10
FEB15 SVAL     4      5        6     16
MAR15 SVAL    13     14       10     12

[IN]dft1=dft1.reset_index()
[IN]new = dft1[['BIKES', 'MATS', 'BLANKETS','CREAMS']].copy() #Copying the contents of the
#transposed dataframe to see if structure same as df can be maintained where there is no name for 
#dtype object 
[IN]new.columns
[OUT]Index(['BIKES', 'MATS', 'BLANKETS','CREAMS'], dtype='object', name='SKU')

我试图将不包括 SKU 列的 dft1 数据帧复制到另一个数据帧中。我认为如果我将几列复制到另一个数据帧中,可以实现类似于 df 的结构,但我仍然在 new.columns 数据帧的 dtype='object' 之后得到 name='SKU' 。使用重置轴可以摆脱 name=SKU 但 dft1 的结构仍然不会相同。

我正在研究非常非常复杂的时间序列代码,它仅在结构类似于正常 df 时才给出输出。因此,我需要 dft1 的结构与从 csv 文件中读取数据帧时的结构相同,例如..

标签: pythonpandasdataframe

解决方案


推荐阅读