为啥 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 重新格式化我的标题?的主要内容,如果未能解决你的问题,请参考以下文章