【问题标题】: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 输出。

标签: csv pandas append concat


【解决方案1】:

排队

df = pd.DataFrame(byqualityissue)

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

formatted = df.unstack(level=-1)

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多