为什么 concat 会重新格式化我的标题?
Why is concat reformatting my headings?
我已按需要对 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')
在行
df = pd.DataFrame(byqualityissue)
您没有为该列命名,因此它采用默认值 0
。
然后当你调用 unstack
,
formatted = df.unstack(level=-1)
结果具有分层列,第一级为 0
。要解决此问题,您可以将上一行替换为
formatted = df.unstack(level=-1)[0]
我已按需要对 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')
在行
df = pd.DataFrame(byqualityissue)
您没有为该列命名,因此它采用默认值 0
。
然后当你调用 unstack
,
formatted = df.unstack(level=-1)
结果具有分层列,第一级为 0
。要解决此问题,您可以将上一行替换为
formatted = df.unstack(level=-1)[0]