为啥 concat 重新格式化我的标题?

Posted

技术标签:

【中文标题】为啥 concat 重新格式化我的标题?【英文标题】:Why is concat reformatting my headings?为什么 concat 重新格式化我的标题? 【发布时间】:2015-08-24 18:39:20 【问题描述】:

我已经按照我的需要对CSV 文件进行了排序,并附加了一个列来正确排序我的数据。但是,在使用concat 时(无论如何,我认为这就是问题所在)输出CSV 文件已更改为(0L,'HeadingTitle')。我只是希望它是 HeadingTitle。

import numpy as np
import pandas as pd
import pandas.util.testing as tm; tm.N = 3

data = pd.DataFrame.from_csv('MYDATA.csv')
byqualityissue = data.groupby(["CompanyName","QualityIssue"]).size()
df = pd.DataFrame(byqualityissue)

formatted = df.unstack(level=-1)
formatted[np.isnan(formatted)] = 0

includingtotals = pd.concat([formatted,pd.DataFrame(formatted.sum(axis=1),columns=['Total'])],axis=1)
sorted = includingtotals.sort_index(by=['Total'], ascending=[False])
#del sorted['Total']
sorted.to_csv('byqualityissue.csv')

输出标题在哪里:

CompanyName, (0L, 'Equipment'), (0L, 'User'), (0L, 'Neither'), Total

如何修改它以使我只有标题?

编辑: 如果我打印 sorted.columns 输出是

Index([(0, u'Equipment), (0, u'User'), (0, u'Neither'), u'Total'], dtype='object')

【问题讨论】:

您能否提供一个来自MYDATA.csv 的最小样本来重现此行为? 我不知道为什么,但列标题是元组,其中存储的零与元组的第一个元素一样长。我以前没见过。一些示例数据可能会有所帮助。 @mcwitt,我添加了 MYDATA csv 的截图作为示例。这个示例数据有帮助吗? sorted 的列是什么样的?您可以在脚本中添加print sorted.columns 并包含输出吗? @mcwitt 添加了请求的 sorted.columns 输出。 【参考方案1】:

排队

df = pd.DataFrame(byqualityissue)

您没有给列命名,因此它采用默认值0。 那么当你拨打unstack时,

formatted = df.unstack(level=-1)

结果在第一级具有带有0 的分层列。要解决此问题,您可以将前一行替换为

formatted = df.unstack(level=-1)[0]

【讨论】:

以上是关于为啥 concat 重新格式化我的标题?的主要内容,如果未能解决你的问题,请参考以下文章

为啥wps表格合并公式只显示公式不显示结果?

在 concat、oracle 期间格式化列标题

使用时刻 js 将 mysql 日期中的组 concat 更改为印度尼西亚日期格式

为啥Mac电脑重装系统显示摸不干净

为啥我的调试数据未格式化?

请问为啥我的安卓手机不能下载软件,提示文件名或格式错误?