2015-06-09 2 views
2

Я отсортировал файл так, как хочу, и добавил столбец для правильной сортировки данных. Однако при использовании concat (я думаю, что это проблема, так или иначе). Файл CSV был изменен на (0L, 'HeadingTitle'). Я просто хочу, чтобы это был HeadingTitle.Почему concat переформатирует мои заголовки?

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

Как изменить это так, что я только иметь заголовок названия?

Edit: Если я печатаю sorted.columns выход

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

Не могли бы вы включить минимальный образец из 'MYDATA.csv', который воспроизводит это поведение? – mcwitt

+0

У меня нет ответа для почему, но заголовки столбцов являются кортежами с нулем, хранящимся в виде первого элемента кортежа. Я этого раньше не видел. некоторые примеры данных могут оказаться полезными. –

+0

@mcwitt, я добавил скриншот того, как выглядит MYDATA csv в качестве примера. Помогает ли этот пример данным? – jenryb

ответ

1

В строке

df = pd.DataFrame(byqualityissue) 

вы не дают столбец имя, поэтому он принимает значение по умолчанию 0 , Затем, когда вы звоните unstack,

formatted = df.unstack(level=-1) 

результат имеет иерархические столбцы с 0 на первом уровне. Чтобы исправить это, вы можете заменить предыдущую строку на

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

Да! Это очень понравилось. – jenryb

Смежные вопросы