python - 转置数据框熊猫后将结构保留为普通数据框
问题描述
数据帧和转置代码
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 文件中读取数据帧时的结构相同,例如..
解决方案
推荐阅读
- r - 在不使用“dplyr”库的情况下避免嵌套 ifelse
- html - 使用它们的类提取 HTML 元素值
- kotlin - 创建 getter/setter 但没有字段成员
- python - 解析存储在 CSV 文件中的链接
- c# - 如何使 2d 平台在 unity2D 中表现得像钢琴键?
- node.js - Express 中同一页面中的两个 Mongoose 集合
- php - 表单提交甚至电子邮件已经显示 Jquery 的消息
- sql - MS Access - Upsert 查询插入所有数据(包括重复)
- reactjs - 不能在回调中调用 React Hook “useCategory”
- xamarin.forms - Xamarin Forms:如何在另一个顶部显示 Framelayout?